Autor |
Beitrag |
Blume91
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 04.10.08 18:13
Moin!
Schau mal nach TPNGIMAGE, damit solltest du weiter kommen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: 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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 04.10.08 18:31
Moin!
Krass!
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...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Die Muhkuh
      
Beiträge: 33
|
Verfasst: Sa 04.10.08 18:32
Nur zum Anzeigen gäbe es auch noch GraphicEx von Mike Lischke
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: So 05.10.08 04:13
Die Muhkuh hat folgendes geschrieben : | Nur zum Anzeigen gäbe es auch noch GraphicEx von Mike Lischke |
Der Link dazu: www.delphi-gems.com/Graphics.php
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: So 05.10.08 09:17
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 05.10.08 11:19
Narses hat folgendes geschrieben : | 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...  |
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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?
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 Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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 Narses: Beiträge zusammengefasst---
Nun habe ich folgendes ausprobiert:
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 Narses: Delphi-Tags hinzugefügt
--- Moderiert von Narses: 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 152
Win XP
Lazarus
|
Verfasst: 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
|
Verfasst: 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.
|
|
|