zongo-joe - Sa 24.07.21 18:42
Titel: Transparentes Image kann die Größe nicht ändern
Moin zusammen,
ich habe ein Bild in einem
TImage (ImgSono) mit einem unveränderlichen Bild und lege ein zweites, gleich großes transparentes Image drüber, auf dem ich dann zeichne. Das zweite Image wird am Programmstart wir folgt initialisiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Image2.Left := imgsono.left; Image2.top := imgsono.top; Image2.width := imgsono.width; Image2.height := imgsono.height; DoubleBuffered := true; Image2.Canvas.Brush.Color:=$FFFFFF; Image2.Canvas.FillRect(rect(0,0,Image2.Width,Image2.Height)); Image2.Picture.Bitmap.TransparentColor:=$FFFFFF; Image2.Picture.Bitmap.TransparentMode:=tmFixed; Image2.Transparent:=true; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Image2.Canvas.Brush.Color:=$FFFFFF; Image2.Canvas.FillRect(rect(0,0,Image2.Width,Image2.Height)); Image2.canvas.pen.width := 5; Image2.canvas.pen.color := clred; Image2.canvas.moveto(x,y); Image2.canvas.lineto(x2,y2); |
Das funktioniert auch gut. Wenn jetzt der Benutzer aber die Größe von IMGSono (das mit dem unveränderlichen Bild) ändert und ich dann die ganze Prozedur wie oben wieder aufrufe, dann ändert sich zwar die Größe des Image2 (sehe ich daran, dass MouseMove im gesamten Bereich aufgerufen wird), aber ich kann nur auf dem Teil zeichnen, der zu Anfang, beim Programmstart initialisiert wurde, aber nicht auf dem "neuen" Teil.
Weiss einer, woran das liegt ?
Grüße und Dank im voraus,
Zongo
Moderiert von
Th69: Code- durch Delphi-Tags ersetzt
Blup - Mi 28.07.21 10:08
Wenn sich die Größe von
ImgSono ändert, passt du sicherlich auch die Größe von
Image2 an.
Aber passt du auch
die Größe der Bitmap in Image2 an die Größe von
Image2 an?
Zeichenvorgänge mit
Image2.Canvas werden auf
Image2.Picture.Bitmap.Canvas umgeleitet.
Wahrscheinlich musst du die neu dazu gekommenen Bereiche beim Vergrössern auch mit der
TransparentColor füllen.
Moderiert von
Th69: Delphi-Tags hinzugefügt