Kleines Problem: Um die perf einer bestimmten Karte zu verbessern, brauche ich, um Schichten zu schaffen ... In Swing, kein Problem: Wir haben die SWT JLayeredPane ... aber das Neni!
Also hier ist ein kleiner Trick, um transparente Bilder erstellen (Hintergrund Karten haben in der Regel müssen nur einmal berechnet!)
- / / Setze die Farbe, die transparent angesehen werden
- ( ) . getSystemColor ( SWT. COLOR_WHITE ) ; LTransparentColor = Farbdisplay. GetDisplay (). GetSystemColor (SWT. color_white);
- / / Anlegen einer Palette mit transparenter Farbe und alle anderen
- / / Notwendige Farbe auf dem Bild (hier lOtherColor)
- new RGB [ ] { PaletteData lPalette PaletteData = new (neu RGB [] (
- , lTransparentColor. GetRGB ()
- lOtherColor. GetRGB ()
- ));
- / / Erstellen des Bildes mit der Palette
- lWidth, lHeight, 2 , lPalette ) ; LImageData ImageData = new ImageData (lwidth, lHeight, 2, lPalette);
- / / Setze die transparente Farbe des Bildes (hier Weiß)
- ( lTransparentColor. getRGB ( ) ) ; lImageData. transparentPixel = lPalette. getPixel (lTransparentColor. GetRGB ());
- / / Und jetzt!
- ( lDisplay, lImageData ) ; Anmeldetag = new Image (lDisplay, lImageData);
- ( ) ; Rectangle = lImageBounds Anmeldetag. GetBounds ();
- / / Die GC wird in dem Bild zu zeichnen
- lImage ) ; GC LGC = new GC (Anmeldung);
- / / Erster Schritt: runden das Bild eines völlig transparenten Hintergrund
- lTransparentColor ) ; LGC. SetBackground (lTransparentColor);
- lImageBounds ) ; LGC. FillRectangle (lImageBounds);
- / / Und jetzt bleibt, ist vor zu ziehen, wie in der GC!
Dies ist ein erster Schritt zur Zeichnung in Schichten ... werde ich später zurückkommen mit einer kleinen lib ...




Kommentare
Schreibe einen Kommentar Trackback