Autor Beitrag
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 04.07.03 17:41 
Neues Gebiet, neue Anfängerfragen :roll:
Hab jetzt mal angefangen, zu malen
Bisher mach ich das so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
with image1 do begin
     Canvas.RoundRect(001001001010);
     Canvas.TextOut(50,50,'Otto ist lieb');
     //canvas.weitere.tolle.sachen.malen
end;

klappt auch ganz gut, so weit.
Jetzt kommt es aber vor, dass ich das Bild zur Laufzeit vergrößern muss (auch über die Größe der Form hinaus)
Das mach ich dann mit
ausblenden Delphi-Quelltext
1:
image1.Height:=2000// oder eben ein anderer Wert					

Dadurch kann ich aber noch nicht auf dem "neuen Bereich" wie oben malen.
d.h.
ausblenden Delphi-Quelltext
1:
image1.canvas.Textout(50,1900,'Ottos Bruder ist auch lieb');					

bringt nicht den gewünschten Erfolg.

Und nochwas: wie kann ich das ganze gemalte wieder löschen?

_________________
We are, we were and will not be.
Affje
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 04.07.03 21:29 
ich glaube du kannst alles wieder mit image1.canvas.free löschen (???)
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Fr 04.07.03 21:38 
mit free gibst du den Speicher frei und jeder weitere Zugriff würde eine Exception auslösen. Mach lieber

Canvas.Brush.Color := clBtnFace; // oder clBlack oder clWhite oder ...
Canvas.FillRect(ClientRect);

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
10Markus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 05.07.03 15:46 
Titel: Mach es so
Hi,

ich hatte ein ähnliches Problem. Du musst ebenfalls die Größe der Bitmap ändern, d.h. wenn du folgendes machst: image1.height:=400 dann musst du auch das hier machen: image1.picture.bitmap.height:=400;

damit müsste es gehen. Das selbst musst du natürlich auch mit den anderen attributen machen.

_________________
Grüße,
Markus
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 05.07.03 18:22 
Hört sich ganz gut an. Habs aber in der Zwischenzeit anders gelöst bekommen. Da ich die Größenänderung eh nur dann brauche, wenn ich auch ein komplett neues Bild zeichnen will, geb ich einfach das komplette image frei und erzeuge es neu. Also

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    image1.free;
    image1:=TImage.Create(form1);
    image1.Parent:=form1;
    image1.Height:=...
    image1.Width:=...
    [...]

Dann ist automatisch der Zeichenbereich so groß wie ich es brauche.
Is vielleicht nicht das allereleganteste (wenn ich neu tapezieren will, reiss ich ja auch nicht vorher das ganze Haus ab...), aber es geht.
Danke trotzdem ;-)

_________________
We are, we were and will not be.