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:

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;    //(Left*-1)+Width; das habe ich auch ver
    DBBuilderBackgroundImage.Height := Height;  //(Top*-1)+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

user profile iconmaxk 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: