Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Hat TImage eine Größengrenze?
JRegier - Mi 13.07.05 17:44
Titel: Hat TImage eine Größengrenze?
Hallo, na ja ich weiß dass ich die Größengrenze der TImage nicht überschritten habe, aber ich habe folgendes Problem:
- Ich habe eine ScrollBox in der liegt eine TPanel Componente
- Auf den TPanel habe ich eine TImage draufgelegt um etwas auf der TImage zu zeichnen
- so jetzt will ich aber das der Bereich auf den ich Zeichnen will sich auch ausdehnen kann,
also habe ich beim TImage erst Align := alClient gesetzt! Später auch alNone versucht!
- Nun habe ich auf dem TPanel einige Komponenten die ich bewege und wenn eine Mindestgröße
überschritten ist dann setze ich zwischendurch den TPanel auf AutoSize := True und dann
wieder auf AutoSize := False;
- Weil das TImage sich nicht automatisch angepasst hat habe ich es manuel an der Größe des
TPanels angepasst
- Das Problem ist dass die TImage immer noch nicht den ganzen TPanel bedeckt!
Hier der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| with DBBuilderParentPanel do begin AutoSize := True; AutoSize := False; if(Width < DBBuilderScrollBox.Width)then Width := DBBuilderScrollBox.Width; if(Height < DBBuilderScrollBox.Height)then Height := DBBuilderScrollBox.Height; DBBuilderBackgroundImage.Top := 0; DBBuilderBackgroundImage.Left := 0; DBBuilderBackgroundImage.Width := Width; DBBuilderBackgroundImage.Height := Height; end; |
Was mache ich hier Falsch? Könnte es sein dass nach einem AutoSize der Größenwert sich nicht ändert?
maxk - Mi 13.07.05 23:31
Ich kann eigentlich keinen Fehler finden. Aber vielleicht ist es nur ein Denkfehler: Wenn du auf das Image zeichnest, indem zu ein Canvas benutzt, dann wird auch nach Vergrößern des Images das Canvas drumherum nicht vergrößert, da diese Größe beim Erstellen bepinseln festgelegt wird. Also einfach mal versuchen, die Größe von Image1.Picture.Bitmap.Width/Height zu ändern - oder, wenn das nicht geht, das Bild löschen (Image1.Picture:=nil;) und neu bezeichnen.
Gruß,
maxk
JRegier - Do 14.07.05 08:25
maxk hat folgendes geschrieben: |
Ich kann eigentlich keinen Fehler finden. Aber vielleicht ist es nur ein Denkfehler: Wenn du auf das Image zeichnest, indem zu ein Canvas benutzt, dann wird auch nach Vergrößern des Images das Canvas drumherum nicht vergrößert, da diese Größe beim Erstellen bepinseln festgelegt wird. Also einfach mal versuchen, die Größe von Image1.Picture.Bitmap.Width/Height zu ändern - oder, wenn das nicht geht, das Bild löschen (Image1.Picture:=nil;) und neu bezeichnen.
Gruß,
maxk |
Ach, vielen Dank! Es war grundsätzlich ein Fehler ein riesenGroßes Bild zu verwenden wo überall gezeichnet wird,
weil es in meinem Projekt gar nicht nötig ist das Image zu vergrößern ich mache das so, wenn gescrollt wird
setze ich die TImage.Left und Top := 0 und dann zeichne ich einfach wie auch immer neu weil ja nur das relevant
ist, was man sieht! Also blöde Idee ein Bild mit 10000 x 5000 Pixel größe zu verwenden, Delphi meldete
sogar nicht genügend Speicher für diese Operation um so ein großes Bild zu füllen!
Eine Inteligente Lösung ist weniger Speicherintesiv! Hm.. :lol:
Ach du hast ja mir den ScrollEvent erklärt danke! :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!