TImage zur Laufzeit vergrössern
-
Hallo.
Ich habe ein TImage auf dem ich male. Wenn ich die Form1 in der Grösse ändere, dann passt sich auch TImage entsprechend an. Mein Problem ist, das aber der zeichenbare Bereich immer der gleiche bleibt, obwohl das TImage ja nun viel grösser ist. Wieso ist das so bzw wie kann man das ändern? Ich möchte natürlich immer auf dem ganzen verfügbaren TImage zeichnen können.
Ich nutze ein TImage->Canvas da es sich den Inhalt merkt auch wenn man minimiert oder ein anderes Fenster drüber gelegt hatte.
-
EDIT: Ups, hatte den letzten Satz überlesen. Damit war meine Antwort sinnlos...
-
Schade

-
Na ja, vielleicht kann man das Bild aus dem Image irgenwo zwischenspeichern (z.B. in ein TBitmap oder TPicture), dass alte Picture löschen, ein neues in der passenden Größe erzeugen und per Canvas::CopyRect den Bereich wieder reinkopieren.
-
Hallo,
Man könnte auch in ein MetafileCanvas schreiben und das dann übertragen. Da funktioniert die Skalierung dann besser. Dieses einem Metafile zuordnen und das dann mit StretchDraw auf das Image bringen.
-
Sollte es nicht reichen im Objektinspekor bei TImage
Stretch=true
Autosize=true
Align=alClientzu setzen
-
nicht wenn er mit festen Koordinaten hineinzeichnet. Bei relativen Koordinaten aber schon.
-
Dann sollte doch folgendes gehen:
void __fastcall TForm1::FormResize(TObject *Sender) { Image1->Picture->Bitmap->Height= ClientHeight; Image1->Picture->Bitmap->Width= ClientWidth; } //---------------------------------------------------------------------------
-
@GartenzwergEx
Was soll denn genau bei Resize passieren?
Anzeige- Groesse anpassen? (Groesse von TImage)
Bild in Anzeige 1:1 halten oder neu skalieren?
Seitenverhaeltnis des Bildes soll konstant bleiben osder verzerrbar?
-
Ich möchte in das Canvas des TImage malen.
Das TImage nimmt selbstständig die Grösse des Fensters an,jedoch bleibt der zeichenbare Bereich so klein wie beim Start, obowhl das TImage entsprechend grösser ist.
-
Dann mach dass, was ich gepostet habe