Bitmaps einfärben
-
Hallo,
ich hab folgendes Problem:
Ich habe mehrere kleine Grafiken(Textzeichen), aus denen baut der Benutzer sich eine Display-Belegung zusammen. Allerdings ist es so, daß es mehrere Schichten gibt: Texte, Meldungen, Messwerte etc.
Die Zeichen sind aber immer die gleichen. Jetzt will ich aber die verschiedenen Layer einfärben, zum Beispiel sollen alle Meldungen blau sein, alle Messwerte grün und je nach dem welche Schicht gerade editiert wird sollen bestimmte Zeichen eben blasser gezeichnet werden. Gibt es eine Möglichkeit die Zeichen effizient einzufärben, so daß es genügt ein einziges Bitmap im Speicher zu halten? Oder muß ich für jede Farbe ne Kopie anlegen?Vielen Dank schonmal im Voraus
MfG Jester
-
wenn ich dass richtig verstehe, dann hast du für ein zeichen in einem Bitmap und willst da die farbe ändern
dann schreib dir doch eine methode, die das bitmap durchscant und nach einem bestimmten farbton sucht (also nach dem, der eingefärbt werden soll). für jeden Pixel den du findest, überschreibst du ihn mit der neuen farbe
-
Ich möchte aber das gleiche Zeichen mit mehreren verschiedenen Farben verwenden. Und jedes mal von Hand durchzulaufen, um die Pixel zu ändern ist etwas zu langsam.
Zur Not kann ich halt wirklich die Bitmaps ablegen:Bitmap[Farbe][Nr], aber das kostet halt richtig Speicher, bei mindestens 8 versch. Farben. Eben 8mal soviel wie eigentlich nötig wäre.
MfG Jester
-
du hast von kleinen grafiken gesprochen
das pixelweise einfärben geht so schnell, das merkst du garnicht
-
Hast du für deine Zeichen und was auch immer eigen Klassen? Dann könntest du denen das Bitmap::Canvas-Objekt beim Zeichnen als Zeiger übergeben und viel flexibler arbeiten.
-
Okay, hab was gefunden. Ich erledige es jetzt mit BrushCopy:
Da kann ich angeben welche Farbe ersetzt werden soll und er ersetzt sie durch die aktuelle Brush-Farbe. -> genau das was ich wollte.
MfG Jester
-
Mist!
Dann beachtet er nicht, daß ich für Weiß Transparent eingestellt hab
Gibts ne Möglichkeit das auch noch mit einzubeziehen, oder muß ich ein Temporary dazwischen schalten?MfG Jester