![]() |
Transparentes Paletten-PNG strecken
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte mit der aktuellen CE ein transparentes Paletten-PNG gestreckt anzeigen. Das klappt nicht.
Vorgehensweise: 1. TImage platzieren 2. Paletten-PNG mit Transparenz laden, das nicht die Größe von TImage hat. Dieses muss mindestens ein nicht-schwarzes Pixel enthalten, von dem aus sich links, oben oder oben-links mindestens 1 transparentes Pixel befindet. 3. Stretch anmachen Erwartetes Ergebnis: Die PNG wird dargestellt. Tatsächliches Ergebnis: Alle deckenden Pixel, von denen aus sich direkt links, oben oder oben-links mindestens 1 transparentes Pixel befindet, sind stattdessen schwarz. (Bevor jemand fragt, ob Pixel, die es gar nicht gibt, transparent sind: nein. Der Fehler kann also in (0,0) nicht auftreten.) Bei sehr kleinen Vergrößerungsfaktoren (unter ca. 2) kann es sein, dass der Fehler nicht bei jedem Pixel auftritt. Suche nach der Lösung: Die fehlerhafte Methode fällt einem sofort auf:
Delphi-Quellcode:
. Die wird auch nur bei Palettenbildern aufgerufen. Dort wird diverse Male
DrawTransparentBitmap()
Delphi-Quellcode:
und
BitBlt
Delphi-Quellcode:
aufgerufen.
StretchBlt
Delphi-Quellcode:
und zu dunkle Pixel, kann nun wirklich jeder Windows-User ein Lied von singen und nicht nur Programmierer. Die Standardeinstellung für die Methode heißt nämlich
StretchBlt
Delphi-Quellcode:
, macht aber tatsächlich ein sinnloses AND zwischen Pixeln und ist somit absoluter Schwachsinn.
BLACKONWHITE
Lösung:
Delphi-Quellcode:
einfügen nach
SetStretchBltMode(hdcTemp, COLORONCOLOR);
Delphi-Quellcode:
. Die neue Zeile ist bei mir 902.
SetBkColor(hdcTemp, cColor);
Das Argument
Delphi-Quellcode:
geht auch, aber
HALFTONE
Delphi-Quellcode:
scheint logisch die richtigere Variante zu sein und ist angeblich performanter.
COLORONCOLOR
Frage: Ist das in der aktuellen kommerziellen Delphi-Version immer noch kaputt oder muss ich einen QP-Report abschicken? Beispiel ist angehängt. Alle deckenden Pixel sind weiß. Einfach in ein TImage laden und Stretch anmachen, dann sollten die meisten Pixel schwarz sein. |
AW: Transparentes Paletten-PNG strecken
Ja, das ist auch in Delphi 12 mit Update 2 noch so. Es kommt ein Muster mit schwarzen, grauen und weißen Pixeln heraus.
Für den Eintrag brauchst du die Buildnummer: 29.0.51961.7529 |
AW: Transparentes Paletten-PNG strecken
Danke, habe ich angelegt.
Gibt es eine Möglichkeit, Requests nach dem Abschicken zu bearbeiten? Immerhin kann ich jetzt eine Request-Liste sehen. |
AW: Transparentes Paletten-PNG strecken
Nein, man kann nur Kommentare hinzufügen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz