AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Auf Canvas zeichnen, wenn PNG
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Canvas zeichnen, wenn PNG

Ein Thema von Jazzman_Marburg · begonnen am 8. Mai 2011 · letzter Beitrag vom 8. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 16:47
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.

gruss
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 16:50
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.
Und was hat Photoshop mit Delphi zu tun?
Ich habe schon mit ganz normalen Bitmaps mit Alphachannel gearbeitet... war überhaupt kein Problem. Du darfst nur nicht die veralteten GDI-Routinen zum Zeichnen nutzen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 16:56
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.
Und was hat Photoshop mit Delphi zu tun?
Ich habe schon mit ganz normalen Bitmaps mit Alphachannel gearbeitet... war überhaupt kein Problem. Du darfst nur nicht die veralteten GDI-Routinen zum Zeichnen nutzen.
Kein Problem solange du es nicht von einem zum anderen konvertierst.
Teste es doch ganz einfach

gruss
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#14

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 17:26
Ich will mal GDI+ als Stichwort einwerfen. Da das PNG von Natur aus unterstützt, wird es wohl auch keine Probleme geben, wenn man mit den GDI+-Routinen auf das Bild malt.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!

Geändert von rollstuhlfahrer ( 8. Mai 2011 um 19:12 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#15

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 17:44
Da das PNG von Natur aus unterstützt, wird es wohl auch keine Probleme geben, wenn man mit den GDI+-Routinen auf das Bild malt.
Benötigst Du da nicht auch ein gültiges DC-Handle (TCanvas.Handle)?

Übrigens steht bei Delphi XE in der PNGImage-Unit
Delphi-Quellcode:
const
  LibraryVersion = '1.564';

  //...

  TPngImage = class{$IFDEF UseDelphi}(TGraphic){$ENDIF}
  //...
  public
  //...
    {Canvas}
    {$IFDEF UseDelphi}property Canvas: TCanvas read fCanvas;{$ENDIF}
  //...
  end.
Gibt es da evtl. zu älteren Versionen einen Unterschied?

Edit:
Ich hab's jetzt noch einmal mit Delphi 5 getestet, als TPNGImage noch TPNGObject hieß: Das Zeichnen auf den TPNGxxx-Canvas funktioniert definitiv!
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom ( 8. Mai 2011 um 18:01 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 18:08
OK, ich habe es getestet:
  1. TPNGObject.Canvas ist tatsächlich beschreibbar
  2. Beim Assign geht der Alphachannel verloren (weil leider nicht „kopiert“ sondern gezeichnet wird (mit AlphaBlending))

@EWeiss: Das heißt aber nicht dass es nicht möglich wäre den AlphaChannel zu erhalten. PNGDelphi macht es nur einfach nicht, und die meisten Programme auch nicht.

Im Anhang befindet sich ein DUnit-TestProjekt, in dem auch eine Methode gezeigt wird, wie man den Alphachannel erhalten kann (man kann dann aber nicht die GDI zur Weiterverarbeitung nutzen). Das Rückkopieren von einem Bitmap in ein PNG geht ähnlich.

Aber wenn es auch direkt mit TPNGObject.Canvas geht, ist das natürlich eh unnötig...
Angehängte Dateien
Dateityp: zip BitmapPNGAlpha.zip (609,4 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#17

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 18:16
Benötigst Du da nicht auch ein gültiges DC-Handle (TCanvas.Handle)?
Kommt ganz drauf an, wie man das Bild lädt. In diesem Fall ist der beste Weg, ein GDIP-Image zu nehmen und dann mit Hilfe von .LoadFromFile() das Image zu laden. Dass man zeichnen kann, braucht man eine GDIP-Graphic. Diese kann man sich aus dem GDIP-Image erstellen lassen und schon kann man zeichnen.

Sicherheitshalber danach ein Graphic.Flush() ausführen, dass auch wirklich gezeichnet wurde und nicht nur die Aufträge dazu gegeben wurden.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 18:47
Cih will mal GDI+ als Stichwort einwerfen. Da das PNG von Natur aus unterstützt, wird es wohl auch keine Probleme geben, wenn man mit den GDI+-Routinen auf das Bild malt.

Bernhard
Jo so mache ich das
Text auf ein PNG zeichen ist ja quasi das gleiche.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz