![]() |
Canvas mit Alphakanal in Delphi 5
Hallo,
ich zeichne Text auf ein Canvas (momentan TBitmap.Canvas) und kopiere es anschließend mit Canvas.Draw dort hin, wo es hin soll. Ein direktes Zeichnen auf das Ziel kommt nicht in Frage. Das Vorgehen funktioniert super für Rasterfonts, aber TrueType Fonts haben ja Farbübergänge an den Buchstabenrändern, so dass ich mit einer einzigen transparenten Farbe nicht auskomme. In neueren Delphi-Versionen gibt es da wohl TPNGImage, aber das gibt es eben in Delphi 5 noch nicht. Was habe ich für Möglichkeiten? |
AW: Canvas mit Alphakanal in Delphi 5
PNGImage gab es auch mal für Delphi 5, ist aber aus lizenzrechtlichen Gründen nicht mehr öffentlich verfügbar.
Eventuell helfen dir die LMD Tools weiter, aber die kenne ich auch nicht so genau. Meine persönliche Empfehlung: Auf Delphi 2010 updaten :-D |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
Oder einfach mal bei
![]() |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
Interessanterweise ist die PNGImage auch erst ab D6 gelistet. |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
:arrow:
![]() @Bernhard: Kennst du denn was besseres als PNGImage.pas (V1.564)? Wäre sehr dran interessiert, weil ich aktuell auch das Problem habe, dass die Komponente beim Laden eines bestimmten PNGs abstürzt (andere Programme haben keine Probleme damit). |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
Was also damals Freeware war, ist es auch jetzt noch. Embarcadero/CodeGear hat nur die Rechte für eine Weiterentwicklung der damaligen Komponente übernommen/erhalten. Die alte freie Version geht diese also garnichts an und man kann diese somit problemlos verwenden. |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
![]() |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
Auszug aus der ursprünglichen Lizenz: Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
Ich möchte das mal zusammenfassen:
TPNGImage ist als Komponente verfügbar, die in einer alten Version auch unter Delphi 5 lauffähig ist. Sie ist aber auch in neueren Versionen noch, speziell im Bereich Transparenz, verbuggt. -> würd ich somit nicht unbedingt bevorzugen LMDTools könnte da auch was bieten. Wir setzen auch LMDTools ein, sicherlich eine alte Version, die würde sich bestimmt nicht mit der neuen vertragen. Wenn es die angesprochene Lösung also in unserer alten Version nicht gibt, fällt das auch weg. Ich werde den beiden Ansätzen morgen mal nachgehen. Um das aber noch mal ausdrücklich zur Sprache zu bringen: Ich brauche kein PNG, sondern lediglich einen Grafikpuffer (bevorzugt ein Canvas) mit Alphakanal, den ich zum Schluss mit Transparenz-Kanal auf mein Ziel-Canvas kopieren kann. Schönen Feierabend! |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
|
AW: Canvas mit Alphakanal in Delphi 5
Was hat das ganze eigentlich mit dem Alphakanal von TCanvas zu tun? Auch durch TPNGImage wird sich da nichts ändern. TCanvas ist zu vergleichen mit einem Blatt Papier. Da gibt es keine halbtransparenten Farben. Was drauf gemalt ist, ist draufgemalt und kann nur übermalt werden.
Was genau ist denn dein Ziel? Text den du auf einen Hintergrund mit FarbeX geschreiben hast dort runter zu nehmen und dann auf einen bunten Hintergrund schreiben wobei der Farbeeinfluss von FarbeX gleich 0 sein soll? Der richtige weg wäre hier wohl einfach den Hintergrund wo die Schrift später drauf soll auf dein Canvas zu kopieren bevor du darauf schreibst. Und anschließend kannst du das ganze komplett (also mit Schrift) zurück kopieren. |
AW: Canvas mit Alphakanal in Delphi 5
Zitat:
Ich werde mir als erste Amtshandlung mal Graphics32 ansehen. [edit]Wenn ich davon ausgehe, dass TBitmap32.RenderText die Position und Dimensionen der Schrift nicht anders berechnet als die Win32-API-Funktion DrawText, dann ist das durchaus nutzbar für meine Zwecke. Die Frage ist allerdings, wie bekomme ich das Ganze zum Schluss zurück auf mein Canvas? Meine momentan einzige Idee wäre: -zweites Bitmap32 instanzieren -Hintergrund vom Canvas in das zweite Bitmap32 laden -erstes Bitmap32 transparent drüberzeichnen -Canvas vom zweiten Bitmap32 zurück auf Canvas kopieren Sehe ich das richtig?[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz