Einzelnen Beitrag anzeigen

Benutzerbild von Rudy
Rudy

Registriert seit: 12. Jun 2006
7 Beiträge
 
Delphi 7 Enterprise
 
#1

Randpixel von Icons glätten oder Imagelist mit PNG?

  Alt 19. Jun 2006, 00:47
Hallo liebe Delphi-Experten,

im Rahmen eines Projekt habe ich eine Sammlung von ca. 1000 Icons im BMP-Format erhalten, welche ich nun für verschiedene Zwecke nutzen möchte, wie im VirtualTree, im Actionmenu oder auf einfachen Buttons.

Das Problem, das dabei auftritt, ist besonders die weiße Hintergrundfarbe, welche in die Randpixel der eigentlichen Grafik der Icons übergeht. Die Standard-Imagelist von Delphi unterstützt nur eine Farbe als Transparenz, kann aber beispielsweise die zwar weiß wirkenden, aber nicht völlig weißen Randpixel nicht in eine transparente Farbe umwandeln.

Wenn diese Icons dann beispielsweise auf den Canvas mit der Standard-clBtnFace Farbe ausgegeben werden, ist der weiße Hintergrund zwar korrekt transparent, aber diese fast-weißen Randpixel sehen rissig aus. Gibt es eine Möglichkeit, womöglich eine bereits existierende Komponente, die dieses Problem löst? Oder einen Algorithmus, welcher ausgehend von einem Pixel - z.B. dem Eckpixel, ähnlich dem Photoshop-Zauberstabs mit der 'Glätten'-Option, die Farbe durch eine andere ersetzt?

Eine einstellbare Toleranz für die Transparenz-Farbe anhand des Abstands auf der RGB-Palette habe ich schon programmiert, das Ergebnis hat zwar weniger weißliche Randpixel, aber immer noch sehr rissige Kanten. Ziel wäre ein sanfter Übergang der Transparenz in die Grafik.

Falls nicht, was ist mit PNG-Grafiken? Diese unterstützen eine sehr effektive Transparenz, sie werden ja schon ewig in MacOS eingesetzt. Kennt jemand eine Imagelist-Komponente, die sich für die Ausgabe und Speicherung von PNG-Grafiken eignet?

Oder kennt jemand hierfür eine andere effektivere Lösung? Wäre für jeden Tip dankbar.

Schönen Gruß,
Rudy

PS: Da ich neu hier bin, dem ganzen Forum ein freundliches Hallo! Ich hoffe ich kann künftig auch mit Rat und Tat zur Seite stehen - wenn ich helfen kann, mach ich das gerne.
Rudy
  Mit Zitat antworten Zitat