Autor Beitrag
connyT
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 18.04.19 11:00 
Hallo zusammen,

in meinem Programm möchte ich ein Usericon anzeigen wie das in Windows (Bogen mit Kreis darüber).
Dieses füge ich in ein TImage in die TImageMultiResBitmap ein.
Ich habe jetzt verschiedene Formate und verschiedene Größen ausprobiert, aber leider wird mein Bild immer wieder verpixelt angezeigt.
Weiß jemand woher das kommt?
Wenn ich mir das Bild im Bitmap Editor in Delphi anschaue, dann ist es da nicht verpixelt. Irgendwo dazwischen verpixelt es mir das Bild.
Ich habe es mit einer Datei ausprobiert die die Darstellungsgröße hat und mit einer die größer ist als das Bild was dargestellt werden soll. Leider alles mit dem gleichen Ergebnis /:

Hat irgendjemant einen Tipp für mich, wie ich in Firemonkey meine Bilder nicht verpixelt einfügen kann?

Im Moment bin ich mit meinen Lateien am Ende und über Google habe ich leider auch nichts gefunden was geholfen hätte /:

Viele Grüße,
Conny
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.04.19 11:19 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 18.04.19 11:33 
Die automatische Resize-Methode bei TImage liefert öfter mal unschöne Ergebnisse, besonders auch dann, wenn größere Bilder in ein kleineres TImage gepresst werden, bzw. die Auflösungen des Bildes nicht exakt mit dem des TImage übereinstimmen.

Hier mal ein Codeschnipsel aus einem meiner Programme, wo ich größere Bilder verkleinere. Du musst dann halt die Größe des SmallBmp auf die Größe des TImage setzen und das dann im Anschluss zuweisen.

ausblenden Delphi-Quelltext
1:
2:
SetStretchBltMode(SmallBmp.Canvas.Handle, HALFTONE);
StretchBlt(SmallBmp.Canvas.Handle, 0 ,0, SmallBmp.Width, SmallBmp.Height, BigBmp.Canvas.Handle, 00, BigBmp.Width, BigBmp.Height, SRCCopy);


Ist zwar bei mir alles VCL, aber vielleicht hilft dir das trotzdem weiter. :D

_________________
We are, we were and will not be.
connyT Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 23.04.19 08:35 
Erst einmal vielen Dank für eure Anregungen.

@Frühlingsrolle:
Die Eigenschaft .Proportional gibt es in Firemonkey anscheinend nicht. Weder im Objektinspektor noch wenn ich versuche zur Laufzeit darauf zuzugreifen.

@Gausi:
Danke für den Hinweis auf die beiden Funktionien. Manchmal finde ich die Dokumentation von Delphi jedoch echt nervig, weil ich über Google nicht finden konnte was ich in Firemonkey unter "uses" angeben musste damit es die Funktion findet. Ich habe jetzt ein VCL-Projekt gemacht, die Funktion rein geschrieben und dann geschaut woher sie kommt. Aber das muss doch auch einfacher gehen? Als Anfänger weiß ich noch nicht auswendig woher welche Funktion/Klasse kommt xD

Also ich habe den WrapMode des Bitmaps jetzt mal auf "Center" gestellt und dann ist das Bild zu groß, aber noch scharf. Nur bekomme ich es leider nicht verkleinert ohne es zu verpixeln.
Die Methode mit SetStretchBltMode kann ich leider nicht nutzen, weil ich unter Firemonkey nicht an die entsprechende Eigenschaft komme, die ich statt "SmallBmp.Canvas.Handle" einsetzen müsste.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 23.04.19 17:31 
- Nachträglich durch die Entwickler-Ecke gelöscht -