Wie fügt man ein transparentes Bild aus der Zwischenablage in eine C # winforms App ein?

8

Hinweis: Bei dieser Frage handelt es sich um Einfügen aus der Zwischenablage, nicht um in die Zwischenablage zu kopieren. Es gibt mehrere Posts über das Kopieren in die Zwischenablage, aber konnte keine finden, die diese Frage adressieren.

Wie kann ich ein Bild mit Transparenz , z. B. dieses , in eine winforms-App einfügen und Transparenz bewahren?

Ich habe versucht, System.Windows.Forms.GetImage() zu benutzen, aber das erzeugt eine Bitmap mit einem schwarzen Hintergrund.

Ich kopiere dieses Bild von Google Chrome, das verschiedene Formate für Zwischenablagen unterstützt, einschließlich DeviceIndependentBitmap und Format17 .

    
bright 30.06.2012, 11:20
quelle

1 Antwort

12

Chrome kopiert das Bild im 24-Bit-Format in die Zwischenablage. Was die Transparenz in Schwarz verwandelt. Sie können ein 32bpp-Format aus der Zwischenablage abrufen, aber das erfordert die Handhabung des DIB-Formats. Es gibt keine integrierte Unterstützung dafür in System.Drawing, Sie benötigen eine kleine Hilfsfunktion, die die Konvertierung machen:

%Vor%

Beispielverwendung:

%Vor%

Dieser Screenshot wurde mit der BackgroundImage-Eigenschaft des Formulars erstellt und auf eine Standard-Bitmap gesetzt:

    
Hans Passant 30.06.2012, 12:34
quelle