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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2295
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 18.04.19 11:19 
Guten Tag,

hast du die Eigenschaft .Proportional auf True gesetzt?
Und wurde die Grafik dabei vergrößert?

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8404
Erhaltene Danke: 417

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 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

_________________
Oel ngati kameie.
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2295
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 23.04.19 17:31 
Bildbearbeitungs-Funktionen sollten in der Unit Graphics sein, egal ob nun VCL oder FMX.
Funktionen, die zu einem Steuerelement gehören, sind in der Unit "Winapi" des jeweiligen Steuerelemnts vorzufinden.
Sonstige Methoden sind der Microsoft Doku zu entnehmen. Der "Library"-Name entspricht meistens der Unit-Bezeichnung.
Sollte eine Funktion nicht auffindbar sein und/oder in älteren Delphi-Versionen zur Verfügung stehen, kannst du sie entsprechend deklarieren.

Die Klasse "FMX.TCanvas" verfügt wohl über keine ".Handle" Eigenschaft.
Du kannst es mit der Funktion "GetDC()" ermitteln und mit "ReleaseDC()" freigeben.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)