Heim >Backend-Entwicklung >C++ >Wie bleibt die Transparenz beim Kopieren von Bildern in die Windows-Zwischenablage erhalten?
So behalten Sie die Transparenz beim Kopieren eines Bildes in die Zwischenablage bei
Problem: Beim Kopieren eines transparenten PNG-Bilds in die Zwischenablage geht häufig die Transparenz verloren.
Grund:
Lösung:
<code class="language-c#">public static void SetClipboardImage(Bitmap image, Bitmap imageNoTr, DataObject data) { Clipboard.Clear(); if (data == null) data = new DataObject(); if (imageNoTr == null) imageNoTr = image; using (MemoryStream pngMemoryStream = new MemoryStream()) using (MemoryStream dibMemoryStream = new MemoryStream()) { // 将图像以PNG、DIB和标准位图格式放入剪贴板 ... (代码省略,篇幅所限) Clipboard.SetDataObject(data, true); } }</code>
Der zuverlässigste Weg, ein Bild mit Transparenzunterstützung in die Zwischenablage zu legen, ist die Verwendung von PNG-Streaming.
<code class="language-c#">byte[] bm32bData = ImageUtils.GetImageData(bm32b, out stride); // PNG格式的线条是反向的。 bm32b.RotateFlip(RotateFlipType.Rotate180FlipX); data.SetData("PNG", false, pngMemoryStream);</code>
Überprüfen Sie beim Abrufen von Bildern aus der Zwischenablage die verschiedenen Datenformate in dieser Reihenfolge: PNG, DIB, Bitmap, Bild.
<code class="language-c#">public static Bitmap GetClipboardImage(DataObject retrievedData) { Bitmap clipboardimage = null; // 顺序:尝试PNG,然后尝试32位ARGB DIB,再尝试普通的位图和图像类型。 ... (代码省略,篇幅所限) return clipboardimage; }</code>
<code class="language-c#">public static Bitmap ImageFromClipboardDib(Byte[] dibBytes) { if (dibBytes == null || dibBytes.Length </code>
Zusätzliche Tools:
Durch die Anwendung dieser Methoden können Sie die Bildtransparenz effizienter verwalten und vermeiden, dass Transparenzinformationen beim Kopieren in die Zwischenablage verloren gehen.
Das obige ist der detaillierte Inhalt vonWie bleibt die Transparenz beim Kopieren von Bildern in die Windows-Zwischenablage erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!