Ich habe zwei 16x16 RGB / A .ICO-Symboldateien, die jeweils in ein separates System.Drawing.Icon
-Objekt geladen werden.
Wie würden Sie ein neues Objekt Icon
erstellen, das die Zusammenführung der beiden Symbole (eines überlagert) enthält?
Bearbeiten :
Ich war wahrscheinlich nicht so klar, ich möchte nicht zwei Bilder miteinander verschmelzen, ich möchte ein Symbol übereinander legen.
Ich sollte hinzufügen, dass die Symbole bereits transparente Teile enthalten und ich brauche kein transparentes "Blending", um beide Symbole sichtbar zu machen. Was ich brauche, ist das Überlagern der nicht transparenten Pixel eines Symbols über dem oberen eines anderen Symbols. Die transparenten Pixel sollten das Hintergrundsymbol durchscheinen lassen.
Sehen Sie sich beispielsweise das Stackoverflow-Symbol an. Es hat einige Bereiche, die grau und orange sind, und einige Bereiche, die völlig transparent sind. Stellen Sie sich vor, Sie möchten das SO-Symbol über dem Firefox-Symbol einblenden. Sie würden die Grautöne und Orangen des SO-Symbols in voller Farbe sehen, und wo das SO-Symbol transparent ist, würden Sie diese Teile des Firefox-Symbols sehen.
Hier ist die letzte Funktion, die ich mir ausgedacht habe. Es war einfacher als ich dachte ...
Danke an Eoin Campbell für die harte Arbeit.
BEARBEITEN
re: Ihr Kommentar: Für den Anfang ... mein Bild ist nicht schwarz & amp; transparent. Sie sind schwarz und weiß ... beide sind auf 0,6f (60%) Deckkraft eingestellt, also wo es ein Schwarz auf Schwarz (& gt; 100% Schwarz) oder Weiß auf Weiß (& gt; 100% Weiß) gibt, sieht es gut aus, aber dafür die Überlappungen haben Sie 60% Weiß-Schwarz-Mix, die Ihnen die Graue Farbe gibt ... was Sie tun könnten, ist 2 separate ImageAttributes zu erstellen und die Trübungen separat zu optimieren, um zu sehen, ob Sie die erwartete Ausgabe erhalten können (siehe geänderten Code). Es wird anders sein, wenn Ihre Bilder transparente Abschnitte haben.
hat einen Code aus hier
genommen Der Trick besteht darin, jedes Bild mit einer Transparenz zu zeichnen, so dass sie sich gegenseitig sehen können. Nicht spezifisch für Icons, dies sollte für jeden Bildtyp funktionieren. Sie können ToBitmap()
Ihre Symbole zuerst, um sie als Image Objects afaik zu erhalten.
%Vor%