dsBitmap struktur / Ermitteln des Pixelformats

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

dsBitmap struktur / Ermitteln des Pixelformats

Beitrag von Kurzer »

Hallo zusammen,

ich sitze gerade an einer Routine, um ein Image in ein anderes zu kopieren und dabei gleichzeitig Pixelmanipulationen durchzuführen. Mit PB's Point() und Plot() wird das natürlich nix, weil zu langsam.

Ich versuche nun mir die nötigen Daten der Images per API zu besorgen, um die Pixel dann manuell von einem Memorybereich zum anderen zu kopieren.
Klappt auch gut, nur leider kann es ja je nach System und Grafikkarte sein, daß das Pixelformat (RGB, BGR) unterschiedlich ist.

Bekomme ich das auch über die dsBitmap Struktur heraus?

Hier die Daten, die ich mir bsiher extrahiere:

Code: Alles auswählen

If GetObject_(ImageID(#ImageID_Original), SizeOf(BITMAP), @ImageSettings_Original\dsBitmap)
Else
	Error("Beim Anlegen der Bitmapstrukture des Originalbild ist was schiefgelaufen!")
EndIf

sDebug + "Image Buffer Adresse       : " + StrU(ImageSettings_Original\dsBitmap\bmBits, #Long) + #LF$
sDebug + "Image Buffer Pitch         : " + StrU(ImageSettings_Original\dsBitmap\bmWidthBytes, #Long) + #LF$
sDebug + "Image Buffer Bits pro Pixel: " + StrU(ImageSettings_Original\dsBitmap\bmBitsPixel, #Long) + #LF$
sDebug + "Image Color Sheme          : " + StrU(ImageSettings_Original\dsBitmap\bmPlanes, #Long) + #LF$
...
Die Struktur sieht so aus:

LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;


Ich tippe mal auf bmPlanes, ergibt bei mir 1. Leider steht in der Win32 API Hilfe dazu nur "Specifies the count of color planes.", daher bin ich mir nicht sicher.

Edit: Noch mal ne Frage hinterher: Wieso muß ich mir eigentlich separat eine xyz.BITMAP Struktur anlegen und mittels GetObject_ füllen lassen? Sollte das Image, das da auf dem Schirm zu sehen ist nicht schon eine eigene BITMAP-Struktur haben? Es würde doch genügen, wenn ich an die rankäme. (Hat jetzt mit dem Pixelformat nix zu tun, kommt mir aber irgendwie doppelt gemoppelt vor mit der Strukturkopie)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.