Autor Beitrag
Blume91
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 04.10.08 17:57 
Hallo,
Ich probiere nun schon seit mehreren Stunden, mein Problem zu lösen.
Im Unterricht hatten wir bisher nicht viel über Delphi gelernt, sodass ich versuche, mir das alles selbst beizubringen.
Ich habs geschafft, das Programm so zu programmieren, dass es mir, wenn ich einen Haken in eine Checkbox setze, ein Bild hochläd. Hab nun schon zwei Varianten, sodass ich die Formate .bmp und .jpg laden kann.
Allerdings krieg ich es für .png nicht hin.
Wäre für mich sehr wichtig, weil das ja das einzige Format ist, mit dem man Bilder transparent abspeichern kann.
Ich habe auch schon teils gelesen, dass man sich erst noch eine Png-Komponente laden muss. Nur sowas hab ich bisher auch noch gemacht.
Ich hoffe, jemand kann mir helfen.

Viele Grüße
Blume91
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 04.10.08 18:13 
Moin!

Schau mal nach Suche in: Delphi-Forum, Delphi-Library TPNGIMAGE, damit solltest du weiter kommen. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Sa 04.10.08 18:16 
PNG ist ab D2009 in Delphi integriert, dafür gibt es ein OpenSource Projekt weniger: (blogs.codegear.com/n...ges/2008/08/13/39100)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 04.10.08 18:31 
Moin!

user profile iconBernhard Geyer hat folgendes geschrieben Zum zitierten Posting springen:
PNG ist ab D2009 in Delphi integriert, dafür gibt es ein OpenSource Projekt weniger: (blogs.codegear.com/n...ges/2008/08/13/39100)
Krass! :shock:
Nick Hodges hat folgendes geschrieben:
If you are currently using TPNGImage under the license from Gustavo, you can continue to do so. But please note that you aren’t authorized to post that code anywhere.
Finde ich nicht gut. :| Zum Glück kann man ja nicht rausfinden, wann man in den Besitz des (alten) Codes kam... :roll:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 04.10.08 18:32 
Nur zum Anzeigen gäbe es auch noch GraphicEx von Mike Lischke
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: So 05.10.08 04:13 
user profile iconDie Muhkuh hat folgendes geschrieben Zum zitierten Posting springen:
Nur zum Anzeigen gäbe es auch noch GraphicEx von Mike Lischke


Der Link dazu: www.delphi-gems.com/Graphics.php
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: So 05.10.08 09:17 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBernhard Geyer hat folgendes geschrieben Zum zitierten Posting springen:
PNG ist ab D2009 in Delphi integriert, dafür gibt es ein OpenSource Projekt weniger: (blogs.codegear.com/n...ges/2008/08/13/39100)
Krass! :shock:

Entweder genügend Geld bekommen oder wie bei den TNTWare-Projekt wegen zu wenig Beteiligung/Hilfe der Community abgegeben.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Nick Hodges hat folgendes geschrieben:
If you are currently using TPNGImage under the license from Gustavo, you can continue to do so. But please note that you aren’t authorized to post that code anywhere.
Finde ich nicht gut. :| Zum Glück kann man ja nicht rausfinden, wann man in den Besitz des (alten) Codes kam... :roll:

Die Frage ist ob Aufgrund der alten Lizenz diese neue Einschränkung eh nicht hinfällig ist. Da ich es eh in der letzten Version herunter geladen habe und u.U. in kürze auf eine PNG-Implementierung einer anderen Package wechsle ist mir das egal was die neuen Lizenzen sagen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 11:19 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Nick Hodges hat folgendes geschrieben:
If you are currently using TPNGImage under the license from Gustavo, you can continue to do so. But please note that you aren’t authorized to post that code anywhere.
Finde ich nicht gut. :| Zum Glück kann man ja nicht rausfinden, wann man in den Besitz des (alten) Codes kam... :roll:
Problematisch ist vor allem, dass in der alten Lizenz eindeutig drin steht, dass man die Komponente weitergeben darf, solange die Dateien unverändert sind...

Ich habe die Version 1.564 noch auf der Platte, und dort steht in der Lizenz:
Lizenz der Version 1.564 vom 31.Juli 2006 hat folgendes geschrieben:
This component may be distributed freely over the internet only when containing the exact same files from the original packaging.
Ich bin leider kein Rechtsanwalt, aber so wie ich das verstehe ist Nick Hodges Aussage "But please note that you aren’t authorized to post that code anywhere." ein klarer Versuch ist diese Lizenz zu verletzen bzw. entgegen seiner Aussage im Blog "Once again, let me say — again — that we aren’t nullifying the license." dies doch zu tun, indem die Weitergabe praktisch nachträglich verboten wird.
Denn wenn man mal nach der Komponente sucht, dann wurde anscheinend Seiten, die diese (mit der alten Lizenz ja eigentlich konform) angeboten haben, die weitere Verbreitung untersagt.

Da ich die Komponente noch habe, wenn auch vermutlich in einer veralteten Version, kann es mir was die Nutzung der Komponente angeht egal sein, aber trotzdem finde ich die Aussage und Vorgehensweise lizenzrechtlich höchst bedenklich.
Blume91 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 05.10.08 12:05 
So, ich hab nun diese GraphicEx. Aber ich weis leider nicht genau, was ich dann mit denen machen soll, in dem Ordner sind die meisten .pas Dateien.
Und wie installiere ich diese Komponenten in Delphi?

Ich weis im Moment nicht mehr weiter:
Der folgende Quelltext liest bei mir ohne Probleme bmp. Dateien.
Nur wie muss ich das verändern, dass er png lesen kann?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
begin
if CBSalami.Checked=False then image2.Picture := nil ;
if CBSalami.Checked=True then
  begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('Salami.bmp');
  canvas.Draw(248,128,Bitmap);
  Bitmap.Free;
  end;
end;

Ich hoffe, ihr könnt es mir erklären.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 12:14 
Nun ja, du findest in der Unit GraphixEx unter anderem die Klasse TPNGGraphic, die von TBitmap abgeleitet ist. ;-)
Wie wäre es, wenn du mal in die mitgelieferte Hilfedatei schaust, da ist das nämlich direkt auf der Startseite für die verschiedenen Formate verlinkt...
TPicture unterstützt, wenn du die Unit in die uses schreibst, auch alle Formate sofort.
Blume91 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 05.10.08 13:10 
Juhu, ich habs geschafft, nun wird auch png geladen.
ABER
Leider nicht so angezeigt, wie ich es gerne hätte.
Ich brauche das png-Format, da er ein Bild (meine pngDatei) auf ein anderes Bild drüber legen soll. Allerdings aber transparent. Nun wird die transparente Stelle Schwarz angezeigt, aber eigentlich sollte der Teil vom unteren Bild durchscheinen.
Ich benutze zwei Image-Komponenten. In der 1. ist mein Hintergrundbild, und im 2 soll dann jeweils die transparenten Bilder dargestellt werden.
Ist das möglich, oder fehlt vllt noch irgendeine Einstellung?

Danke aber schon mal für die Hilfe zum hochladen! :)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 13:12 
Ich habe es nicht ausprobiert, ob und wie Transparenz funktioniert. Es gibt bei TImage ja die Eigenschaft Transparent. Welche Farbe dann transparent dargestellt wird, wird in Delphi oft am linken unteren Pixel erkannt, ob das hier genauso ist oder Transparent korrekt arbeitet weiß ich nicht.
Blume91 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 05.10.08 13:15 
Habe nun die Eigenschaft Transparent auch auf True gestellt, allerdings hat er leider an der Darstellung nichts verändert, der transparente Teil ist nach wie vor schwarz. -.-

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Nun habe ich folgendes ausprobiert:
ausblenden Delphi-Quelltext
1:
2:
Image2.Picture.Bitmap.TransparentColor := clBlack;
Image2.Transparent := True;

Ich hatte gehofft, dass er eben dann die schwarzen Pixel weglässt, doch nun wird alles transparent und man sieht gar nichts mehr.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Ja, der linke untere Pixel ist transparent.
Was ich mir auch überlegt hatte, man kann ja angeben, welche Farbe er transparent machen soll, also hab ich jetzt die transparente Fläche schwarz gefärbt, und ihm gesagt, er soll die farbe schwarz dann transparent darstellen, dann geht nun aber wieder alles weg.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 13:39 
Wenn es nur um normale Transparenz geht, also keine Transparenzverläufe: Nimm ein normales Bitmap, damit geht es jedenfalls. Was png angeht, werde ich es gleich testen, im Moment bin ich aber noch dabei etwas für einen anderen Thread auszuprobieren ;-).
Blume91 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 05.10.08 13:47 
Ok,
Habs jetzt mit Bmp probiert, da hab ich aber das selbe Problem wie mit png. Beim Bild wird alles transparent.
Ich weis nicht, worans liegt. Dein Lösungsvorschlag scheint wirklich logisch. hmm
Blume91 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 06.10.08 13:33 
Hey,
Um mein Thema nochmal unter die Top Ten zu bringen, muss ich nochmal schreiben.
Ich hab immer noch das Problem, dass das Bild nicht Transparent angezeigt wird, obwohl es eig so sein sollte (habe ja geschrieben, was ich alles probiert habe)

Hier auch mal Danke an jaenicke.

Aber vllt findet einer das Problem.
Hab nun zwei Varianten probiert:
Entweder das Bild in png laden, und dann mit image transparent true
oder das bild in bmp laden, und dann transparent. und dann hängt es ja von dem linken unteren pixel ab, oder der Farbe, die er mir transparent machen soll.

Grüße
und Danke
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 06.10.08 13:41 
Ich kann es wie gesagt mit bmp nicht reproduzieren, im Anhang eine Demo, Stretch auf True, Transparent beim obersten Bild auch.

// EDIT:
Und mit .png gehts auch, siehe zweiten Anhang. Was mir aufgefallen ist: Wenn ich da nur exakt schwarze Zeichnungen habe, dann sieht man nix, das prüfe ich noch, warum, aber ansonsten funktioniert es wunderbar.
Ich habe den Verdacht, dass GraphicEx transparente Bereiche als schwarz in die Bitmap legt oder ähnliches.
Einloggen, um Attachments anzusehen!
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: So 12.10.08 12:44 
Wo man PNGimage herbekommt hab' ich gestern extra noch gefragt (www.delphi-forum.de/...nterladen_87214.html); wenn ich diesen Beitrag nur früher gefunden hätte...

PNGimage unterstützt aber glaub' ich halbtranzparente Farben.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 12.10.08 12:59 
Man muss die Farbtiefe auf 32 Bit stellen, sonst hat man keinen Alpha-Channel, der für die Transparenz zuständig ist.