Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Hintergrundbild skalieren (mit Seitenverhältnis)


schlumsch - Do 14.01.10 21:20
Titel: Hintergrundbild skalieren (mit Seitenverhältnis)
Hallo allerseits,

ich habe eine Frage zum Thema Windows-Hintergrundbild. Ich habe eine Applikation, mit der ich dieses wunderbar setzen kann, entweder gekachelt, zentriert oder auf die Bildschirmbreite skaliert.
Nun würde ich gerne Bilder, welche zu groß oder zu klein sind so skalieren, dass sie komplett auf den Bildschirm passen aber dabei ihr Seitenverhältnis beibehalten wird... sprich ich will keine verzerrten Screens haben aber eben so groß wie möglich.

Hat sich daran evtl schonmal jemand versucht?

thx & lg


Bergmann89 - Do 14.01.10 22:14

Hey,

das sollte ganz einfach sein. du musst halt nur das seitenverhältniss der Auflösung berechnen (Screen.Width, Screen.Heihgt). und dann dem entprechend auf dein Bild umrechnen. Un dann erstellst du n neues Bild, wo der Rest schwarz ausgefüllt ist.
Bsp:
Bildschirm: 1280x1024 = 5:4
Bild 800x600 = 4:3
Umrechung auf Bild: 750x600 = 5:4
jetzt hast du die Größe des neuen Bildes un musst nur noch dein Bild in der Mitte platzieren und gestreckt als Hintergrundbild anwenden, fertsch!

MfG Bergmann.


schlumsch - Do 14.01.10 23:36

okay, klingt einleuchtend. Nun bin ich noch Leihe auf dem Gebiet Grafik. Ich habe ich auf http://delphiportal.de/363-jpeg-bild-skalieren gefunden wie ich ein Bild resize. Hier wird auch keine zusätzliche Komponente (TPicture) genutzt, was soweit auch meinen Vorstellungen entspricht. Wie kann ich nun aber das Bild nicht wie in oben genanntem Link malen sondern in einem neuen Fiel abspeichern?


Bergmann89 - Do 14.01.10 23:47

Hey,

das geht, wie bei allen anderen Sachen in Delphi auch, über SaveToFile oder SaveToStream. Wie du im Link siehst wird zur Bearbeitung des Bilders eine TJPEGImage verwendet. Die findest du in der Unit JPEG.

MfG Bergmann.