AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia PNG und Canvas via BMP und anderes
Thema durchsuchen
Ansicht
Themen-Optionen

PNG und Canvas via BMP und anderes

Ein Thema von creehawk · begonnen am 9. Apr 2024 · letzter Beitrag vom 2. Mai 2024
Antwort Antwort
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
243 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: PNG und Canvas via BMP und anderes

  Alt 10. Apr 2024, 15:06
Moin Moin.

Ich komme der Sache näher. Habe im Netz eine dicke WIC Beschreibung gefunden (WindowsImagingComponent), und experimentiere da mal mit rum.

Sollte ich das hinkriegen sage ich Bescheid. Denn BMP mit Transparenz ist - so scheint es - ein vielgefragtes Problem.

creehawk
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.064 Beiträge
 
Delphi 12 Athens
 
#2

AW: PNG und Canvas via BMP und anderes

  Alt 10. Apr 2024, 21:07
Ich komme der Sache näher. Habe im Netz eine dicke WIC Beschreibung gefunden (WindowsImagingComponent), und experimentiere da mal mit rum.

Sollte ich das hinkriegen sage ich Bescheid. Denn BMP mit Transparenz ist - so scheint es - ein vielgefragtes Problem.
Auf das es sehr einfache Antworten gibt. Ich habe bereits geschrieben, dass es passende FMX Funktionalität gibt. Und WIC gibt es auch bereits in Delphi als TWICImage.

Natürlich ist das Thema sicherlich spannend und es spricht nichts dagegen, selbst das Rad neu zu erfinden, aber wenn du einfach eine Lösung suchst, ist das unnötig.

Da du es selbst offenbar nicht angeschaut hast, liegt im Anhang ein Beispiel für ein VCL Projekt, das einen Teil eines PNG Bildes in ein neues PNG kopiert und speichert. Danach werden beide transparent in einem TImage angezeigt.
Angehängte Dateien
Dateityp: zip VCL mit FMX Bitmap.zip (6,8 KB, 12x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
243 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: PNG und Canvas via BMP und anderes

  Alt 11. Apr 2024, 08:45
Moin Moin.

@jaenicke
Erstmal vielen Dank für dein Beispiel.
Da Rad neu erfinden will ich eigentlich nicht. Aber verstehen was da wie abgeht.

Erstmal muss ich lernen was denn eigentlich die Elemente einer Grafik sind, die Formate und deren Bestandteile. PNG, DDS, JPG, BMP.

Das dauert eine Weile. Und wenn ich hier im Forum was frage gibt's ja immer Antworten, aus denen ich Denkanstösse oder Hinweise "sauge".

Was ich wollte habe ich ja hoffentlich soweit verständlich gesagt ganz am Anfang. Dachte ich. Jedenfalls hat mein erstes "Studium" der Zusammenhänge ergeben, das ein optisch perfektes PNG mit transparenten Hintergrund oft nicht so richtig transparent ist, da sind mitunter noch weitere Layerangaben versteckt, die bloss nicht angezeigt werden. Aber sobald man daraus dann ein BMP mit transparentem Hintergrund machen will kommen die Sachen zum Vorschein. Siehe die erste Post.

Wie auch immer, ich befasse mich jetzt ja mal mit den Möglichkeiten der TWicImage, denn da kann ich auch die in vielen Spielen vorkommenden DDS verarzten.

Aber nochmal Danke an alle die geantwortet haben.

creehawk
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.064 Beiträge
 
Delphi 12 Athens
 
#4

AW: PNG und Canvas via BMP und anderes

  Alt 11. Apr 2024, 12:08
Was ich wollte habe ich ja hoffentlich soweit verständlich gesagt ganz am Anfang. Dachte ich.
Einen Bereich aus einer PNG kopieren und speichern. Genau das macht mein Beispiel und zwar nicht als Bitmap sondern wieder als PNG mit Transparenz.

Jedenfalls hat mein erstes "Studium" der Zusammenhänge ergeben, das ein optisch perfektes PNG mit transparenten Hintergrund oft nicht so richtig transparent ist, da sind mitunter noch weitere Layerangaben versteckt, die bloss nicht angezeigt werden.
Das nennt sich Alphakanal. Der legt fest, "wie transparent" ein bestimmter Bereich ist. Du kannst also auch einen Bereich der PNG fast komplett transparent machen, einen anderen aber gar nicht transparent.

Bitmaps kennen auch einen Alphakanal, aber in der VCL ist der nicht implementiert. Dort wird eine transparente Farbe verwendet, so dass Halbtransparenzen usw. nicht möglich sind.

Deshalb habe ich ja auch vorgeschlagen, dass du, wie in meinem Beispiel, die FMX-Units dafür verwendest. Dann brauchst du keine zusätzlichen Bibliotheken, kannst also mit Bordmitteln gut damit arbeiten. Anzeigen kannst du in der VCL auch PNGs gut. Nur müssen es dafür halt weiter PNGs sein und keine konvertierten Bitmaps.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
674 Beiträge
 
#5

AW: PNG und Canvas via BMP und anderes

  Alt 11. Apr 2024, 13:47
@creehawk
Hast Du mal Graphics32 oder TImage32 ausprobiert.
Die müßten eigentlich das können, was hier diskutiert wird. Bei Gaphics32 braucht man noch irgendeinen Konverter für PNGs.
Aber beide haben ein "TImage", das einen Teil Deiner Arbeit machen sollte.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.064 Beiträge
 
Delphi 12 Athens
 
#6

AW: PNG und Canvas via BMP und anderes

  Alt 11. Apr 2024, 16:14
Wie schon geschrieben: Das geht auch mit Bordmitteln.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
674 Beiträge
 
#7

AW: PNG und Canvas via BMP und anderes

  Alt 11. Apr 2024, 17:05
Graphics32 ist doch ein "Bordmittel", oder?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:35 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