Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Größe vom Image in Form1.OnCanResize verändern (relativ) (https://www.delphipraxis.net/21113-groesse-vom-image-form1-oncanresize-veraendern-relativ.html)

Lefko 28. Apr 2004 00:05


Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute :hi: ,

ich hab folgenden Code:

Delphi-Quellcode:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
Resize := true;
Label1.Left := (NewWidth - Label1.width) div 2;

//Größe relativ verändern
Image1.Width := NewWidth - (NewWidth div 8);
Image1.Left := (NewWidth - Image1.width) div 2;
Image1.Height := NewHeight - (NewHeight div 3);
Image1.Top := NewHeight div 5;

//altes Image löschen
with Image1.canvas do
 begin
  brush.Color := form1.color;
  pen.color := form1.color;
  rectangle(0, 0, image1.width, image1.height);
 end;

Mitte.X := Image1.width div 2;
Mitte.Y := Image1.Height div 2;
//Neues Bild neu zeichnen
Timer1Timer(self);
end;
Wieso geht das nicht? es kommt immer Mist dabei raus, nämlich wird das, was gezeichnet wird, richtig verzerrt, wenn ich die Größe der Form ändere, aber es wird nur noch ein Teil des Bildes gezeichnet, nämlich der, der die Größe von dem ursprünglichen Image hat! (siehe Screenshot!)

Woran kann das liegen? :gruebel: Properties von Image1 stehen auf false:

- Center
- AutoSize
- Stretch

Woran kann das nun liegen??


MfG Lefko.

-tobi- 28. Apr 2004 07:20

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Tag,

bei OnCanResize kann man angeben ob sich die Größe des Fensters weiter ändern darf.

Wenn etwas direkt bei der Größenänderung abgearbeitet werden soll, muß man OnResize verwenden.

Gruß tobi

Lefko 28. Apr 2004 18:44

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Daran liegt es nicht, ich setze erstens Resize auf true und zweitens wird die Größe von Image1 ja auch irgendwie vergrößert, wie man an der Zeichnung darauf sehen kann (screenshot oben)!
Nur wird irgendwie das, was ausserhalb der ursprünglichen größe des image1 liegt, nicht gezeichnet?!

weiss jemand, woran es liegt? ich habe es zwecks test auch mit OnResize versucht, aber da geschieht genau das gleiche! :cry:

MfG Lefko

Lefko 2. Mai 2004 13:50

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Hm, weiss wirklich niemand, woran es liegen kann, dass das Image vergrößert wird mit dem Ändern der Größe der Form, aber nicht der Bereich des Images, in dem gezeichnet wird?!
(siehe Bild oben)

:cry: MfG Lefko :cry:

Christian Seehase 2. Mai 2004 14:28

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Moin Lefko,

setz' mal Stretch auf true, und dann auch noch alle Anchors.

Lefko 2. Mai 2004 15:08

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Das hat leider auch nichts gebracht :(
(Außer, dass die Uhr, die auf die Form gezeichnet wird, jetzt total andere Farben bekommt (statt dem roten Sekzeiger ist dieser dann hellblau-lila-verpixelt und genauso die grünen Striche)

Hm... :gruebel:

Muetze1 2. Mai 2004 15:13

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Moin!

Zitat:

Zitat von Lefko
Hm, weiss wirklich niemand, woran es liegen kann, dass das Image vergrößert wird mit dem Ändern der Größe der Form, aber nicht der Bereich des Images, in dem gezeichnet wird?!
(siehe Bild oben)

:cry: MfG Lefko :cry:

Die Komponente wird ja ordentlich vergössert so wie es scheint (was mit mit Anchors auch automatisch hinbekommt), aber das Bild selber ist davon doch nicht betroffen. Entweder vergösserst du das Bild selber oder du nimmst die Stretch Eigenschaft und setzt diese auf True.

Um das Bild an sich zu verändern, musst du auf Image1.Picture.Bitmap zugreifen und dementsprechend den alten Inhalt auch zoomen (StretchDraw). Bitmap ist dabei nur eine Möglichkeit unter Picture, abhängig vom geladenen Bildtyp (JPEGImage, Icon, Metafile, etc).

MfG
Muetze1

Lefko 2. Mai 2004 15:25

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du hast Recht, es funktioniert mit Stretch := true.

Aber es kommt SOWOHL wenn ich über OnResize der Form die Größe ändere, ALS AUCH wenn ich das über die Anchors des Images erledigen lasse, ein WirrWarr heraus!
(siehe Screenshot)

Oh man, was nun? :oops:

MfG Lefko.

Muetze1 2. Mai 2004 18:52

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Moin!

Das Bild wird nicht ordentlich neu gezeichnet (er malt den Rahmen (Kreis) anscheinend mit falschen Koordinaten).

Und das das Bild so grob-pixelig ist, ist auch eindeutig durch das Stretch zu erklären, weil die Property den Inhalt nicht interpoliert beim stretchen.

Wieso malst du nicht einfach deine Uhr im OnPaint direkt auf das Canvas der Form und anhand der aktuellen Parameter?

Ansonsten ein einfaches Beispiel für eine runde Uhr die mit unterschiedlichen Grössen klarkommt, kannst du dir TRoundClock auf meiner Website anschauen, sollte nicht so kompliziert sein der Code.

MfG
Muetze1

Lefko 2. Mai 2004 19:20

Re: Größe vom Image in Form1.OnCanResize verändern (relativ)
 
Ich hab mir deine Kompo mal runtergeladen und schau sie mir jetzt an :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz