Bitmap und Scan0



  • Hallo,

    ich habe da mal eine Frage zu dem internen Aufbau der "Bitma" Klasse, vielleicht kann mir da jemand weiterhelfen:

    Um die Daten einer Bitmap schnell manipulieren zu können kann man ja die Methode "LockBits" der Bitmap Instanz aufrufen. Die zurückgegebene "BitmapData" Struktur enthält eine Property namens "Scan0", die ja den Anfang der eingentlichen Bilddaten zurückliefert. Somit lassen sich über "Scan0" als Zeiger auf die erste Bildzeile alle Pixel der Bitmap z.B. überschreiben. Zum Abschluss muss man noch die Methode "UnlockBits" aurufen.

    Soweit so gut.

    Aber:
    Ich kann mir ja denn "Zeiger" Scan0 in einer Variablen zwischenspeichern und so auch zu jeder Zeit wieder auf die Bilddaten zugreifen, ohne wieder extra LockBits vorher aufrufen zu müssen. Gerade unter C++/CLI ja einfach machbar.

    Das scheint auch problemlos zu funktionieren. Die Frage ist nun, ist das erlaubt bzw. wie werden die eigentlichen Bilddaten in der Bitmap gehalten? Die Bitmap Klasse ist zwar selbst managed, aber was ist mit den Bilddaten? Wenn diese z.B. in einem unmanaged array gehalten werden, wäre ein Zugriff auf "Scan0" auch nach dem Aufruf von "UnlockBits" in Ordnung, oder?

    Bisher habe ich keinen eindeutigen Hinweis gefunden, der sagt, wie genau die Bilddaten gespeichert werden, unmanaged oder managed.

    Weiß darüber jemand etwas genaueres?

    Danke.


Anmelden zum Antworten