Autor Beitrag
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Sa 24.07.21 17:42 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
    // Größe anpassen
    Image2.Left := imgsono.left;
    Image2.top := imgsono.top;
    Image2.width := imgsono.width;
    Image2.height := imgsono.height;
 
    // transparente Farbe festlegen, Ausfüllen und transpatent machen
    DoubleBuffered := true;
    Image2.Canvas.Brush.Color:=$FFFFFF;                       //Hintergrundfarbe, die Transparent erscheinen soll
    Image2.Canvas.FillRect(rect(0,0,Image2.Width,Image2.Height));   //mit transparenter Farbe Hintergrund füllen
    Image2.Picture.Bitmap.TransparentColor:=$FFFFFF;          //setzen der transparenten Farbe
    Image2.Picture.Bitmap.TransparentMode:=tmFixed;           //Modus
    Image2.Transparent:=true;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    //Beispiel zeichnen 
    Image2.Canvas.Brush.Color:=$FFFFFF;                       //Hintergrundfarbe, die Transparent erscheinen soll
    Image2.Canvas.FillRect(rect(0,0,Image2.Width,Image2.Height));  // löschen alte Zeichnung

    Image2.canvas.pen.width := 5;     // Zeichnen
    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 user profile iconTh69: Code- durch Delphi-Tags ersetzt
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1334
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 26.07.21 09:48 
Hallo,

hast du ein Clip Rect gesetzt? Das ist das einzige was mir einfällt, was ein zeichnen verhindern könnte.
Oder ist da irgendwo stretch eingestellt? Da wären dann die Koordinaten falsch.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 174
Erhaltene Danke: 43



BeitragVerfasst: Mi 28.07.21 09: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 user profile iconTh69: Delphi-Tags hinzugefügt