Entwickler-Ecke
Multimedia / Grafik - imagelist- bmp skalieren
Sunreader - Mo 14.04.03 11:47
Titel: imagelist- bmp skalieren
Ich habe vor ein Programm zu schreiben welches mit imagelist-en bilder zeichnet welche sich größenmäßig der bildschirmauflösung anpassen.
Erst hab ich versucht die eigenschaften width und height der imagelist zu ändern, das klappt aber nicht, weil dann automatisch die geladenen bilder entfernt werden.
Also hab ich ein weiteres imagelist erstellt mit den benötigeten bildern drin und als width und height die maximal mögliche einstellung (was vielleicht gar nicht wichtig ist, egal;)
Dann ändere ich bei der imagelist, aus welcher nachher wirklich die bilder ausgelsen werden sollen die größeneinstellung und kopiere mit addimages die bilder der dummy- list in die eigentliche.
Durch diesen Umweg hab ich es letztendlich geschafft die Größe der ausgegebenen Bilder zu verändern, das Problem was sich jetzt aber stellt ist, dass sich bei diesen Operationen automatisch die option 'dehnen' der imagelist auf 'zuschneiden' ändert, was dazu folgt, dass wenn ich eine niedrige Bildschirmauflösung wähle, nur ein halbes bitmap angezeigt wird anstatt es zu skalieren. ('dehnen' kann man nicht zur laufzeit aktivieren, so wire ich das sehen)
Falls jemand eine Lösung für mein Problem weiß oder einen von vornerein eleganteren Weg kennt, wäre ich für diese Information dankbar.
Sunreader
Michael Stenzel - Di 15.04.03 00:57
Hi.
Wenn Du die Bilder aus die Liste in eine eigene Bitmap kopierst und sie dann in ein TCanvas anzeigst, dann geht es.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Timer1Timer(Sender: TObject); var Rect : TRect; // größe der Anzeigefläche Bitmap : TBitmap; BildIndex : integer; begin Bitmap := TBitmap.Create; // Neue Bitmap erstellen BildIndex := 0; // BildIndex aus Imagelist imlBilder.GetBitmap(BildIndex,Bitmap); // Bitmap aus Liste Kopieren Rect.Left := 0; // Zielrechteck bestimmen Rect.Top := 0; // Hier als Beispiel Form1 Rect.Right := Form1.Width; Rect.Bottom := Form1.Height; Form1.Canvas.StretchDraw(Rect,Bitmap); // Bitmap in Ziel kopieren Bitmap.FreeImage; // Bitmap Freigeben. end; |
Viel erfolg
Michael.
Sunreader - Di 15.04.03 09:30
Danke :D
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!