Am 29.07.2009 um 10:02 schrieb Christian Hahn:

Hallo, ich bitte um ein bisschen Nachhilfestunde, in der online- Hilfe und dem Users Guide kann ich's nicht finden: Was ist picture.mask und picture.transparency und wie gehe ich damit um?

Och, das steht aber auf der Seite für die Picture-Klasse...


In einem Window will ich etliche Canvas platzieren, dorthinein schreibe ich jeweils JPGs mit graphics.drawpicture. Auf die JPGs muss ich nun Teile aus anderen Bildern, nämlich nur einen Baum, ein Haus etc., aufmontieren. Hier brauche ich also wohl transparency.

Die transparent-Eigenschaft macht einfach alle weißen Bildteile (d.h. alle Pixel, deren RGB-Wert gleich 255,255,255 ist) transparent, wenn Du der Eigenschaft den Wert '1' zuweist:

myPict.transparent = 1 // alle weißen Pixel werden komplett transparent
     myPict.transparent = 0 // keine Transparenz


Die Mask-Eigenschaft ist da etwas komplexer. Die Maske hat die gleiche Größe, wie das eigentliche Bild, und bestimmt, welche Bildteile wie dargestellt werden. Ist ein Pixel der Maske komplett schwarz (RGB 0,0,0), wird der entsprechende Pixel des Bildes komplett opak. Je heller Du den selben Pixel der Maske machst, desto transparenter wird der entsprechende Pixel des Bildes dargestellt, bis er komplett transparent ist (RGB 255,255,255). Ich verwende als Maske immer ein entsprechendes Graustufenbild, obwohl Du genau so gut ein farbiges Bild in die Maske zeichnen kannst. Ich finde nur, dass es bei einem Graustufenbild wesentlich einfacher ist, den resultierenden Transparenzgrad vorherzusagen.


Darüber hinaus wäre ich noch dankbar für eine Einschätzung zu den JPGs. Je daten-umfangreicher das JPG, desto länger dauert natürlich das Zeichnen und das "blättert" doch ganz schön. Ich habe schon versucht, mit off-screen-Zeichnen etwas Zeit herauszuholen. Das Verschieben der Canvas auf dem Bildschirm geht damit recht flott, aber ungünstigerweise kann der Anwender alle Canvas auch zoomen (damit mehr davon auf den Bildschirm passen) und dann muss ja jedesmal das Verhältnis von Original-Bild zur Größe des Canvas neu berechnet werden. Frage: Was kostet hier eigentlich die Zeit? Das Berechnen der Größenverhältnisse oder das Zeichnen selbst?

Ich denke die meiste Zeit wird hier für das Skalieren benötigt.


Gruß,
Christian

Antwort per Email an