Autor Beitrag
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 28.03.22 20:50 
Ich arbeite unter anderem mit einer TImageList und einem TJvImageListViewer, um das Symbol darzustellen. Der Dialog wählt es natürlich lediglich aus, aber ich kann es "separieren" und weiterverarbeiten, zB. auch in ein Bitmap konvertieren.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
aber du brauchst danach ja noch die Auswahl innerhalb der Icon-Datei welches Format du haben möchtest.
Kein spezielles Format, einfach so, wie es ist!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wäre es da nicht einfacher das Icon schlicht komplett an IcoFX zu übergeben?
Ich möchte es nun einmal in der Zwischenablage haben. Wenn das aber nicht geht, und danach sieht's aus, kann ich es immer noch als Datei speichern und mit IcoFX aufrufen, und/oder es als Bitmap in die Zwischenablage stellen.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 28.03.22 21:21 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Kein spezielles Format, einfach so, wie es ist!
So wie es ist heißt bei Icons in der Regel, dass es sich um mehrere Bilder in einer Datei handelt. Das versteht IcoFX aber nur als .ico Datei.
Oder kann der Dialog auch ein bestimmtes Format auswählen?

Ohne eine Bibliothek, mit der du Icons richtig öffnen kannst (nicht nur die Pseudo-Variante mit TIcon), wird das nicht klappen.

Jedenfalls bliebe was die Zwischenablage angeht wohl nur die Daten selbst inkl. Alphakanal zur Verfügung zu stellen. Denn wenn ich den Quelltext richtig deute, kann TBitmap zwar den Alphakanal (du könntest vielleicht die entsprechenden Funktionen verwenden), aber beim Kopieren in die Zwischenablage wird dieser nicht verwendet.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 29.03.22 16:29 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
So wie es ist heißt bei Icons in der Regel, dass es sich um mehrere Bilder in einer Datei handelt. Das versteht IcoFX aber nur als .ico Datei.
Oder kann der Dialog auch ein bestimmtes Format auswählen?
Kann er nicht, es ist der ganz normale "Anderes Symbol"-Dialog. Mit "So wie es ist" meinte ich die ausgewählte Symbol-Grafik, nur diese eine! Und diese eine Grafik will ich als Symbol in die Zwischenablage kopieren, was mit Assign aber nicht klappt.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
aber beim Kopieren in die Zwischenablage wird dieser nicht verwendet.
Ja, ist wohl so. Ist aber nicht weiter schlimm, denn die ausgewählte Symbol-Grafik kann man ja immer noch als .ico-Datei speichern und mit IcoFX laden etc.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 29.03.22 17:54 
Du scheinst nicht zu verstehen, was jaenicke dir geschrieben hat. Beim ICO-Format handelt es sich um ein Container-Format, d.h. es kann verschiedene Icons unterschiedlicher Größe (z.B. 16, 32, 64, ...) beinhalten - es gibt also nicht "das eine Symbol".

Und du hast immer noch nicht genau beschrieben, was bei Clipboard.Assign(aIcon) nicht funktioniert!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 29.03.22 20:16 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Du scheinst nicht zu verstehen, was jaenicke dir geschrieben hat. Beim ICO-Format handelt es sich um ein Container-Format, d.h. es kann verschiedene Icons unterschiedlicher Größe (z.B. 16, 32, 64, ...) beinhalten - es gibt also nicht "das eine Symbol".
1 Symbol erhalte ich mit dem "Anderes Symbol"-Dialog... Da erhalte ich 1 Icon, genau 1 Grafik. Diese kann man als .ico-Datei speichern, aber leider nicht so einfach in die Zwischanablage kopieren. Es geht mir nicht um ein Container-Format; ich weiss, dass Icons mehrere Größen enthalten können (aber dies nicht müssen). Und um diese 1 Grafik (32x32) aus dem Dialog geht es mir.

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Und du hast immer noch nicht genau beschrieben, was bei Clipboard.Assign(aIcon) nicht funktioniert!

Doch, das habe ich bereits beschrieben:
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:

Mit Clipboard.Assign(aIcon) erhalte ich die Meldung

Zitat:
Zwischenablage unterstützt keine Symbole.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 29.03.22 20:52 
TIcon.SaveToClipboardFormat löst eine Exception aus, weil dies nicht unterstützt wird. Das ist schon so.

Interessant an der Sache:
Wenn man mit IcoFX eine transparente Grafik kopiert, kann man sie dort auch transparent wieder einfügen. In Zeichenprogrammen wird sie aber nicht transparent eingefügt.

Letztlich lässt sich das dann nur klären, indem man die Daten aus der Zwischenablage genau analysiert.

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 29.03.22 21:05 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Letztlich lässt sich das dann nur klären, indem man die Daten aus der Zwischenablage genau analysiert.
Dann lasse ich das, keine Ahnung, wie ich das machen soll.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 29.03.22 21:18 
Und genau dafür habe ich dir ja das FreeClipboardViewer-Tool empfohlen (und die Daten kann man dann in eine Datei speichern und diese dann analysieren).

PS: Sorry, die Fehlermeldung hatte ich überlesen.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 30.03.22 17:17 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Und genau dafür habe ich dir ja das FreeClipboardViewer-Tool empfohlen (und die Daten kann man dann in eine Datei speichern und diese dann analysieren).
Nach dem Kopieren einer Icon-Grafik mit IcoFX zeigt FreeClipboardViewer den Inhalt der Zwischenablage als Bitmap an. Man kann das als Datei speichern, aber was nützt mir das dann?

Wenn es ein Bitmap ist, muss es einen Weg geben, es transparent in die Zwischenablage zu bringen, denn IcoFX kann das ja auch. Es ist mir aber nicht gelungen, die Transparenz beim Umwandeln vom Icon zum Bitmap zu erhalten.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 30.03.22 17:28 
Anhand der Bitmap kann man ja rausfinden, ob und wie sie als transparent gespeichert ist (es kann natürlich sein, daß IcoFX hier irgendwas spezielles benutzt).
Hänge doch mal eine von IcoFX (aus Symbol erzeugte) transparente Bitmap sowie eine von dir erzeugte Bitmap hier an.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 30.03.22 17:54 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hänge doch mal eine von IcoFX (aus Symbol erzeugte) transparente Bitmap sowie eine von dir erzeugte Bitmap hier an.

Ok, hier:
Einloggen, um Attachments anzusehen!
_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 30.03.22 18:11 
Ich kenne mich mit den Interna nicht so genau aus. Für mich sieht es so aus als ob der Schritt der Ausmultiplikation des Alphakanals fehlt, der im Quelltext vorhanden ist, aber bei der Zwischenablage nicht verwendet wird.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 31.03.22 10:50 
Das erste was mir beim Vergleich beider Dateien mit WinMerge auffällt, ist, daß sich die internen Werte (fast immer) um jeweils 1 unterscheiden (s. Anhang).
Das erklärt aber wohl noch nicht die fehlende Transparenz, macht es aber schwerer diese zu vergleichen.

Ich muß jetzt gleich erst einmal weg, aber heute nachmittag versuche ich mehr zu analysieren.
Einloggen, um Attachments anzusehen!
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 31.03.22 11:36 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es ein Bitmap ist, muss es einen Weg geben, es transparent in die Zwischenablage zu bringen, denn IcoFX kann das ja auch. Es ist mir aber nicht gelungen, die Transparenz beim Umwandeln vom Icon zum Bitmap zu erhalten.

Ich würde mal auf das PixelFormat tippen dass dabei eine Rolle spielt.
Ich verwende dafür pf32Bit (RGBA). Aber MS hat da in den letzten Jahren soviel getan. In MSDN stehen massen Sachen die mir neu sind. Vlt gibt es also mittlweile ganz andere PixelFormate die das auch können.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 31.03.22 12:56 
Als Pixelformat ist bei beiden (s. an Position 001C in meinem angehängten Bild) der Wert 0x18 = 24 eingetragen - und auch die Dateigrößen sind gleich.
Es ist also kein Alphakanal eingetragen und auch ImageView zeigt beide Bitmaps mit weißem Hintergrund (also nicht transparent) an.
Dann kann es also nur irgendeine Spezialbehandlung von IcoFX sein, wenn das aus der Zwischenablage kopierte Bitmap (= Icon) transparent angezeigt wird (vllt. merkt es sich intern noch, daß es transparent war).
Wird es denn auch transparent angezeigt, wenn man es aus einer anderen IcoFX-Anwendung (d.h. 2 Instanzen öffnen) kopiert?

Probieren müßte man wirklich mal den Vorschlag von Sinspin und eine 32bit (ARGB) Bitmap in die Zwischenanlage kopieren (mit A = 0 bei der Hintergrundfarbe und 0xFF sonst).

Edit: Hier noch der Link zum Bitmap-Format: Windows Bitmap
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 31.03.22 18:16 
Es gibt noch etwas Magie aus alten Zeiten für Bitmaps mit Transparenz. Die Farbe des Pixels, links oben, wird als Transparente Farbe verwendet.
Wenn ich mich recht erinnere gab es aber kein Flag in der Bitmap Datei um transparent oder nicht zu speichern.
Deswegen kam als weitere Magie dazu das man sich entschieden hat reines Magenta (RGB=255,0,255) per default durchsichtig zu zeichenen wenn auch der Pixel links oben Magenta war.

Das ist von ganz ganz früher, Win 3.0/Win 3.1. Ich hatte mir zu der Zeit mal einen Bitmap Viewer für 256 Farben unter DOS (800x600 Pixel :shock: ) geschrieben.
Keine Ahnung ob sich da Heute noch jemand dran hält.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 31.03.22 18:21 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Dann kann es also nur irgendeine Spezialbehandlung von IcoFX sein, wenn das aus der Zwischenablage kopierte Bitmap (= Icon) transparent angezeigt wird (vllt. merkt es sich intern noch, daß es transparent war).
Scheint so, denn:
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Wird es denn auch transparent angezeigt, wenn man es aus einer anderen IcoFX-Anwendung (d.h. 2 Instanzen öffnen) kopiert?
Nein, die Transparenz geht beim Einfügen verloren. Das passiert, wie erwartet, auch, wenn ich eine Icon-Grafik mit IcoFX kopiere, IcoFX beende und dann neu starte. Innerhalb ein und der selben Instanz kann ich jedoch mit Transparenz einfügen.

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Deswegen kam als weitere Magie dazu das man sich entschieden hat reines Magenta (RGB=255,0,255) per default durchsichtig zu zeichenen wenn auch der Pixel links oben Magenta war. [...]
Keine Ahnung ob sich da Heute noch jemand dran hält.
Ja, ich halte mich da noch dran, wenn ich 16x16 oder 32x32 Bitmaps entwerfe, obwohl die Farbe heutzutage keine Rolle mehr spielt.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 01.04.22 07:49 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Nein, die Transparenz geht beim Einfügen verloren. Das passiert, wie erwartet, auch, wenn ich eine Icon-Grafik mit IcoFX kopiere, IcoFX beende und dann neu starte. Innerhalb ein und der selben Instanz kann ich jedoch mit Transparenz einfügen.
Wie wäre es eigentlich mit einem besseren Icon-Editor, der das besser macht?
Der hier hat z.B. keine Probleme mit dem Einfügen von transparenten Bildern:
www.computerbild.de/...tor-Pro-2140317.html
(Link zur Computerbild, weil auf anderen Seiten Virenwarnungen kommen)

Man kann den aber auch einfach mit Lazarus selbst erstellen:
github.com/JonathanILevi/gfie-src
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 01.04.22 17:50 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es eigentlich mit einem besseren Icon-Editor, der das besser macht?
Der hier hat z.B. keine Probleme mit dem Einfügen von transparenten Bildern:
www.computerbild.de/...tor-Pro-2140317.html
Danke für den Tipp! Das ändert aber nichts daran, dass ich weder transparente noch sonstige Icons mit meinem Programm in die Zwischenblage kopieren kann, sondern "nur" nicht-transparente Bitmaps!

Ok, das ist dann eben so. Ist ja auch nicht wirklich ein Problem! :)

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!