Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: nonVCL TBitmap - Classe (gesucht)

  Alt 15. Aug 2006, 11:46
Zitat von turboPASCAL:
Könntest du mir darüber etwas mer sagen ?

Nunja, ich möchte unter nonVCl viel mit Bitmaps machen u.a. auch mit 32bpp (alphakanal und so).
Das wird also ohne etwas müsam.
Ich versuche es einfach mal. So ganz grob ist die Bitmap eines der zwei Nativ unterstützten Formate von Windows. Alles was du anzeigst wird immer (Windows-Intern) in eine Bitmap umgewandelt (die Alternative müssten Meta-Files sein). Hierbei meine ich die normale Windowsdarstellung, ohne auf Schnittstellen wie DirectX oder OpenGL zuzugreifen.

An sich gibt es auch zwei Typen von Bitmaps, Bitmaps (so werden die im SDK benannt) und DIBs (Device Independend Bitmaps). Letztere sind immer anderen Lösungen vor zu ziehen. Wie der Name schon vermuten lässt, kann ein DIB überall verwendet werden. Um das wandeln in das benötigte Format kümmert sich das anzeigende Device.
Der Aufbau einer Bitmap ist auch denkbar einfach, du findest sehr leicht online die Spezifikationen. Das Format macht seinem Namen alle Ehre, du hast eigentlich nur eine Mappe/Matrix, bei der zu jedem Pixel sein Farbwert abgespeichert wird. Du kannst es dir also wirklich als eine Matrix von Width Spalten x Height Reihen vorstellen. Dies sind die Nutzdaten.
Um diese richtig interpretieren zu können bedarf es noch ein paar Metainfos. Hierzu zählen eigentlich nur die Größe (Höhe und Breite), die Kodierung (Bits pro Pixel) und ob die Daten komprimiert vorliegen oder nicht. Da sind noch ein zwei "Prüfsummen" drin. Mir fällt gerade kein schöneres Wort ein, jedenfalls wird noch halbwegs sicher gestellt, dass die Datei korrekt ist (anhand der Größe) und eine Bitmap (gibt eine Magic Number)

Windows kapselt für dich eigentlich nur diese beiden Teile. Eine non-VCL Bitmap besteht eigentlich nur aus zwei Teilen, den Infoheader (der enthält die Metainfos) und der Pixelmatrix. Wenn du Scanline ausführst, würdest du einfach nur direkt auf Letztere zugreifen. Hier gilt es zu beachten, dass die Zeilen von unter nach oben gelesen werden. Ganz unten in dieser Matrix steht also die Zeile, die ganz oben angezeigt wird.
Ja, mehr ist es eigentlich schon gar nicht. Im Windows SDK (oder bei MS) findest du schon so ziemlich alles, was man nun mit dieser Struktur machen kann. Insbesondere wenn du hier spezielle Funktionen haben möchtest (wie Alphakanaldaten) solltest du einfach mal schauen, was GDI+ so bietet, da kann ich dir leider nicht genaueres zu sagen, aber das ist eine 2D Grafikbibliothek von MS, die, wenn ich mich nicht völlig irre, recht gut mit Bitmaps umgehen kann
  Mit Zitat antworten Zitat