Also ob es wirklich performater ist wenn man anstelle von 24/32 Bit eher zu 1 Bit greift sollte man eher mal umfangreich testen. Denn bei 1 Bit sind es zwar weniger Daten aber diese sind Speziell verpackt und müssen erst noch umständlich entpackt werden. Was bei 24/32 Bit entfallen würde. Aber ich vermute mal, dass es sich in der Wage hält.
Zum erstellen einer Farbpalette schaust du am Besten mal in
diesem Beitrag. Und dann solltest du als Format 4 oder 8 Bit verwenden. 1 Bit ist eigentlich nur Schwarz und weiß.
Wieso das eigentlich. Nun ja. Monocrome Bitmaps haben eine Eigenart. Ich kann mir nicht erklären wieso genau das so ist und in den MSDNs habe ich so auch nichts darüber gefunden. Es gibt aber eine Möglichkeit die Farben zu definieren. Und zwar wenn du bei einem Bitmap das PixelFormat pfDevice einstellst wo zuvor das Pixelformat pf1Bit eingestellt war, dann berücksichtigt er beim Zeichnen die aktuelle Text (SetTextColor) und Hintergrundfarbe (SetBkColor). Wichtig aber du musst das Bild mit BitBlt zeichnen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var BMP: TBitmap; begin BMP := TBitmap.Create; try BMP.PixelFormat := pf1bit; BMP.Width := 100; BMP.Height := 100;
BMP.Canvas.Brush.Color := clBlack; BMP.Canvas.FillRect(Rect(10, 10, 65, 60)); BMP.Canvas.FillRect(Rect(50, 50, 95, 95));
BMP.PixelFormat := pfDevice;
SetBkColor(Canvas.Handle, clMaroon); SetTextColor(Canvas.Handle, clGreen); BitBlt(Canvas.Handle, 10, 10, BMP.Width, BMP.Height, BMP.Canvas.Handle, 0, 0, SRCCOPY); finally BMP.Free; end; |
Wie gesagt. Ich weiß nicht genau wie das zustande kommen kann und evtl wäre es sicherer, wenn du lieber auf 4 o. 8 Bit setzt und das Bild mit einer Palette versiehst.
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.