Irgendwie bin ich zu doof das zu finden, wie man sowas macht.
Im Prinzip wollte ich einfach nur schnell einen 4-Bit-Stream in Bitmap.Scanline kopieren
und das als Graustufen sehen, ohne erst die Pixel einzeln umrechnen zu müssen,
aber aktuell sieht das Bild dann sehr farbenfroh aus, selbst wenn ich vorher das Monochrom-Property setze.
Inzwischen das Palette-Property entdekt, darüber mit dem Typ HPALETTE bei
SetPaletteEntries gelandet, aber hatte leider noch keine Wirkung, der erste Versuch.
[EDIT]
Grade nochmal nach "Delphi SetPaletteEntries" gesucht und
https://www.imageen.com/ieforum/topic.asp?TOPIC_ID=2673 entdeckt.
* CreatePalette, ResizePalette,
* SetPaletteEntries,
* SelectPalette, RealizePalette
Mal sehn ob dieser "nichtfunktionierende" Code nicht doch geht.
[EDIT2]
Nee, ging nicht.
Ich bekomm einen Datanstrom aus Bytes, mit 4 Bit pro Pixel in Graustufen,
und den schiebe ich direkt in ein TBitMap, aber die farbliche Datstellung ... naja
Der zweite Block ist das was aktuell als Testcode existiert.
Delphi-Quellcode:
var Bytes := FingerSensor.AcquireFingerImage;
var Width := Sqrt(Length(Bytes) * 2);
meLog.Lines.Add('
Bytes: ' + Length(Bytes).ToString);
meLog.Lines.Add('
ImageSize: ' + Width.ToString);
imFingerImage.Picture.Bitmap.PixelFormat := pf4bit;
imFingerImage.Picture.Bitmap.SetSize(Trunc(Width), Trunc(Width));
Move(Bytes[0], imFingerImage.Picture.Bitmap.ScanLine[imFingerImage.Picture.Bitmap.Height - 1]^,
imFingerImage.Picture.Bitmap.Width * imFingerImage.Picture.Bitmap.Height
div 2);
const Grays: TArray<TColor> = [$00000000, $00111111, $00222222, $00333333,
$00444444, $00555555, $00666666, $00777777, $00888888, $00999999,
$00AAAAAA, $00BBBBBB, $00CCCCCC, $00DDDDDD, $00EEEEEE, $00FFFFFF];
var HPalette := imFingerImage.Picture.Bitmap.Palette;
SetPaletteEntries(HPalette, 0, 16, (@Grays[0])^);
//imFinger.Picture.Bitmap.Palette := HPalette;
imFingerImage.Picture.Bitmap.Palette := SelectPalette(imFingerImage.Picture.Bitmap.Canvas.Handle, HPalette, True);
//CreateHalftonePalette(DC: HDC)
imFingerImage.Refresh;