Resize - TImage mit Bitmap
-
Jetzt muß ich wirklich bloß noch genau das machen, was Du machst.
Ich habe allerdings ein leeres Projekt und es klappt leider nicht.
Folgendes habe ich gemacht:
Ich lege eine neue Anwendung an.
Ändere den FormStyle zu MDI-Form.
Füge eine TImage-Komponente hinzu.
Bei dieser verändere ich nur folgende Eigenschaften:
Align = alClient
Picture = das anzuzeigende Bild auswählen
Stretch = true
Dann kompilieren und ausführen.Ich kann das Formular in der Größe verändern und die TImage-Komponente paßt sich an. Das Bild wird allerdings "überzeichnet".
Wenn ich z.B. mein Formular auf Vollbild setze (Runtime). Dann sehe ich das Bild in der Anfangsgröße und auf dem erweiterten Platz (durch die Vergrößerung) den gestretchten Teil des Bildes. Es ist also als würde das Bild vergrößert werden, allerdings noch einmal in der Ursprungsgröße in die linke, obere Ecke gezeichnet werden.Was hast Du anders gemacht???
-
Hallo,
die Form muß neu gezeichnet werden!
wenn du dein Test maximiert hast und dieser Effeckt erscheint,
das kleine Bild auf dem Großen, und klickst auf minimieren und
danach auf die Taskleiste um es wieder aufzubauen ist der Effeckt
weg, daher muß die Form neu gezeichnet werden wenn ein Resize aus
gelöst wurde.gruß promicha
-
Ich habe folgendes versucht im OnResize-Event der Form:
Form->Repaint();
Image->Repaint();Beides funktioniert nicht. Tut mir leid, wenn ich jetzt irgendetwas offensichtliches übersehe, aber ich weiß wirklich nicht, was ich machen soll.
-
hast recht funktioniert nicht, habs gerade probiert.
Ich habe jetzt alle einfachen sachen mal probiert von
Refresh bis Update aber nichts hilft. Ich probiere mal
ob der Effeckt bleibt wenn man beim onResize das Bild
erneut einladet, wenn nicht dann giebts da auch noch
Möglichkeiten.
-
Bild neu einladen bringt nichts.
Also eins ist sicher, es liegt an MDI, denn normal gehts ja.
Mich interessiert das jetzt auch, aber ich gehe erst mit dem
Hund und dann lese,suche,FAQe mich mal durch ob ich was finde
womit ich der Sache auf dem Grund komme, ist bestimmt Simpel.
-
Super, ich danke Dir schon mal jetzt für Deine bisherigen Mühen.
Ich muß jetzt noch ein bißchen an meinen Datenbank-projekten weiterarbeiten. Dann gehts es mal ins Bett. 5:30 Uhr ist Aufstehen angesagt...

-
So also, ähh ja erst mal gute::nacht
ich habe auf die schnelle nichts gefunden, leider mußte ich auch
geschlagende fast 2 Stunden Telefonieren.
Nun gut man kann es kompliziert machen und die Messages abfangen und
Auswerten da onResize ja bereits beim Start ausgefürt wird, und dann
entsprechend reagieren und das MDI Aufbauen klappt auch ist
aber nicht eine einfache Lösung.
Die einfache Lösung ist man benutzt etwas was nichts direct damit zu tun
hat, also man nehme ein TPanel ebenfalls mit Align->AllClient und BevelInner,
BevelOuter auf "bvNone" setzen und daruf das TImage platzieren mit den
bekannten Einstellungen, das funktioniert.Ist sicherlich nicht die perfekte Lösung aber es geht, nach meiner
Suche mußte ich Feststellen das im Aufbau von MDI immer Probleme
giebt, guck mal in der suche mit MDI, oft in Verbindung mit VC++gruß und nacht Michael
-
Fantastisch, genau so hat es funktioniert. Ich danke Dir.
-
tja, aber irgenwie funktioniert es denn doch nicht so, wie gewünscht.
versuch 1:ich erstelle ein MDI-Dokument, setze ein TImage rein, vergebe diesem ein bildchen. starte, und nichts ist zu sehen.
versuch 2:ich erstelle ein MDI-Dokument, setze ein TPanel und darin ein TImage rein, vergebe diesem ein bildchen. starte, man sieht es, allerdings überdeckt er jetzt die child fenster.
was soll ich da tun, damit ich nur im hintergrund ein bild sehen kann, ohne dass dieses die child fenster überdeckt?
gruß gerd
-
Speicher das Bild doch in einem TBitmap.
In OnPaint der Form machste StretchDraw in Canvas der Form!
-
ich find das so scheisse
laut der Dokumentation müsste das automatisch beim Anpassen der Width/Height Eigenschaften funktionieren... bei mir klappt das nicht mal in normalen Forms, aber ich hab grad n Workaround hinbekommen:delete(Image);
Image = new(TImage)(Form1);
Image->Parent=Form1;
Image->Top=8;
Image->Left=8;
Image->Width=size+2;
Image->Height=size+2;funktioniert

CUAlgoMan