BitBtn - Darstellungsfehler

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

BitBtn - Darstellungsfehler

Beitrag von Ally »

Ein Icon mit transparenten Bildbereichen wird auf einem BitBtn nicht korrekt dargestellt.
Teil-transparente Pixel werden nicht mit ihrer eigentlichen Farbe, sondern als Grauton wiedergegeben.
Dadurch entstehen, besonders dort wo mit transparenten Pixeln für eine geglättete Darstellung gesorgt werden soll, sehr unschöne Darstellungsfehler.
Dieses Problem ist mir bisher nur beim BitBtn aufgefallen. SpeedButton, DirectoryEdit, ToolButton oder MenuItem's geben die Icons korrekt wieder.
Im Anhang ein Beispiel, um das Problem zu verdeutlichen. (Win10, Lazarus 2.2.0RC1 r65419 FPC 3.2.2 x86_64-win64-win32/win64)

Vor einiger Zeit habe ich dazu auch schon einen Bugreport verfasst und zwischenzeitlich gesehen, dass es noch einige weitere Reports gibt die den Fehler auch beschreiben.
Leider gab es im Bugtracker bisher keine Resonanz zu dem Problem.
Jetzt bin ich nicht gerade ein Experte auf dem Gebiet, habe aber trotzdem versucht der Sache auf den Grund zu gehen. Leider ohne Erfolg. :(

Meine Frage an Euch ist also: wer kennt sich damit etwas aus und kann z.B. die Stelle lokalisieren an der beim BitBtn, abweichend von den anderen Komponenten, das Icon gezeichnet wird.
Vielleicht genügen ja ein paar kleine Hinweise, die den Experten im Entwickler-Team den Einstieg erleichtern.


Gruß Roland

Hier eine vergrößerte Darstellung, auf der man den Unterschied gut sieht.
-
BitBtnDarstellungsfehler.png
BitBtnDarstellungsfehler.png (4.04 KiB) 1274 mal betrachtet
-
Dateianhänge
BitBtnDarstellungsfehler.zip
(12.41 KiB) 54-mal heruntergeladen

Mathias
Beiträge: 6204
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: BitBtn - Darstellungsfehler

Beitrag von Mathias »

Bei mir ist es perfekt. Habe es mit Linux getestet.
Dateianhänge
Bildschirmfoto vom 2021-10-06 17-21-15.png
Bildschirmfoto vom 2021-10-06 17-21-15.png (13.54 KiB) 1251 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: BitBtn - Darstellungsfehler

Beitrag von siro »

Windows 64 Bit

bei mir sieht es so aus:
BitBtn2.jpg
BitBtn2.jpg (28.97 KiB) 1247 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: BitBtn - Darstellungsfehler

Beitrag von Ally »

Hallo Mathias, hallo siro,

danke für eure Beiträge. Ich habe jetzt auch mal meine Linux-Kiste (Linux Mint 20.2) angeworfen und dort sieht, wie bei Mathias, alles gut aus.
Vielleicht könnte jetzt noch ein Mac'ler drauf-schauen und wenn es dort auch richtig gezeichnet wird, ist wie immer Windows schuld. :wink:

Gruß Roland

wp_xyz
Beiträge: 4891
Registriert: Fr 8. Apr 2011, 09:01

Re: BitBtn - Darstellungsfehler

Beitrag von wp_xyz »

Wenn man in den Source-Code eintaucht, sieht man, dass TSpeedButton als TGraphicControl-Nachfahre das Icon mit den ImageList-Methoden selbst zeichnet, während TBitBtn als TWinControl-Nachfahre dies über das Widgetset-Interface vom Betriebssystem erledigen lässt. Nachdem Windows in den alten Tagen nie gut mit alpha-Kanal-transparenten Bildern zurechtkam, wird, nehme ich an, das png in ein "pseudo-transparentes" Bitmap umgewandelt; mit "pseudo-transparent" meine ich das Verfahren, dass eine bestimmte Farbe als transparent angenommen wird - dabei geht die bei einem echten Alpha-Kanal mögliche teilweise Transparenz natürlich verloren, und das verursacht die Verfälschungen im Randbereich der Bilder.

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: BitBtn - Darstellungsfehler

Beitrag von Ally »

Hallo wp_xyz,

Das heißt, unter Linux wird kein "pseudo- transparentes" Bitmap erzeugt, sondern direkt das richtige Bitmap gezeichnet?
Könnte man das, zumindest unter den neueren Windows-Versionen, nicht auch so machen?
Oder ist das alles viel komplizierter?

Gruß Roland

wp_xyz
Beiträge: 4891
Registriert: Fr 8. Apr 2011, 09:01

Re: BitBtn - Darstellungsfehler

Beitrag von wp_xyz »

Ally hat geschrieben:
Do 7. Okt 2021, 11:48
Oder ist das alles viel komplizierter?
Weiß nicht. Wenn ich mir den Source-Code anschaue, ist es mir schon kompliziert genug - zumindest für ein paar Pixel. Du siehst, ich bin nicht sehr motiviert, mich da stark zu engagieren. Aber du kannst gerne einen Patch einreichen.

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: BitBtn - Darstellungsfehler

Beitrag von Ally »

Hallo wp_xyz,

trotzdem, danke für deine Hinweise.

Gruß Roland

Antworten