LabVIEWForum.de - Maske für nicht serialisierte Pixmap zeichnen

LabVIEWForum.de

Normale Version: Maske für nicht serialisierte Pixmap zeichnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich bin mir nicht ganz sicher, ob es ein BUG ist, aber in der LV-Hilfe ist nicht ersichtlich, wie genau die Maske für transparent zu zeichnende Pixel in dem VI nicht serialisierte Pixmap zeichnen zu verwenden ist.

Das VI „nicht serialisierte PixMap zeichnen“ benötigt am Eingang Maske nicht wie in der Hilfe beschrieben für jeweils 8 zu zeichnende Pixel ein Maskenbyte, oder besser ausgedrückt: Dadurch ist die Verwendung des Eingangs Maske nicht eineindeutig beschrieben.

Für jede zu beschreibende Zeile des 2D-Pixelarrays müssen immer 2×N bytes des Maskenarrays übergeben werden, da das Maskenarray offenbar WORD-basiert arbeitet. D.h. für 1-16 zu zeichnende Pixel pro Zeile müssen 2 Maskenbytes;
für 17-32 zu zeichnende Pixel pro Zeile müssen 4 Maskenbytes usw. übergeben werden. Es können nicht 3 oder 7 usw. Maskenbytes pro Zeile übergeben werden!

Zudem wird nicht Bit 0 des ersten Maskenbytes für das erste Pixel verwendet, sondern das Maskenbyte-Bit-Array muss nochmal gedreht werden. Bit 0 des ersten Maskenbytes wird nämlich für das 8. Pixel verwendet, Bit1 für das 7. usw.

Vielleicht erspart dieser thread dem einen oder anderen ein paar Stunden Suche und Rumprobieren.


Gruß, Marko
(23.10.2015 16:15 )Trinitatis schrieb: [ -> ]Hallo zusammen,

ich bin mir nicht ganz sicher, ob es ein BUG ist, aber in der LV-Hilfe ist nicht ersichtlich, wie genau die Maske für transparent zu zeichnende Pixel in dem VI nicht serialisierte Pixmap zeichnen zu verwenden ist.

Das VI „nicht serialisierte PixMap zeichnen“ benötigt am Eingang Maske nicht wie in der Hilfe beschrieben für jeweils 8 zu zeichnende Pixel ein Maskenbyte, oder besser ausgedrückt: Dadurch ist die Verwendung des Eingangs Maske nicht eineindeutig beschrieben.

Für jede zu beschreibende Zeile des 2D-Pixelarrays müssen immer 2×N bytes des Maskenarrays übergeben werden, da das Maskenarray offenbar WORD-basiert arbeitet. D.h. für 1-16 zu zeichnende Pixel pro Zeile müssen 2 Maskenbytes;
für 17-32 zu zeichnende Pixel pro Zeile müssen 4 Maskenbytes usw. übergeben werden. Es können nicht 3 oder 7 usw. Maskenbytes pro Zeile übergeben werden!

Zudem wird nicht Bit 0 des ersten Maskenbytes für das erste Pixel verwendet, sondern das Maskenbyte-Bit-Array muss nochmal gedreht werden. Bit 0 des ersten Maskenbytes wird nämlich für das 8. Pixel verwendet, Bit1 für das 7. usw.

Vielleicht erspart dieser thread dem einen oder anderen ein paar Stunden Suche und Rumprobieren.


Gruß, Marko

LV Pixmaps sind immer auf 16 Bit pro Zeile gerundet. Die Maske is einfach eine 1 Bit Pixmap (B/W). Das war immer so und ist in dem Sinne kein Bug. Allenfalls könnte die Dokumentation darüber deutlicher sein, obwohl das bei der Pixmap Beschreibung selbst irgendwo schon erwähnt ist.

Auch die Bitfolge ist erklärbar da LabVIEW (und das Pixmap Format) ursprünglich vom Mac kommt, wo alles MSB (Most Significant Bit/Byte first) war. (Motorola 68000 Format)
(29.10.2015 23:57 )rolfk schrieb: [ -> ]...Allenfalls könnte die Dokumentation darüber deutlicher sein...

..das mein´ich aber auch!
Wenn die von dir beschriebenen Fakten nämlich nicht bekannt sind, kann man sich schon einige Zeit mit diesem Problem beschäftigen. Da hätte ein Satz in der Hilfe zur Maske sicher geholfen.

Gruß, Marko
Referenz-URLs