複製影像到剪貼簿時如何保持透明度
問題: 將透明PNG影像複製到剪貼簿時,通常會遺失透明度。
原因:
解:
<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>
將具有透明度支援的圖像放入剪貼簿最可靠的方法是使用PNG串流。
<code class="language-c#">byte[] bm32bData = ImageUtils.GetImageData(bm32b, out stride); // PNG格式的线条是反向的。 bm32b.RotateFlip(RotateFlipType.Rotate180FlipX); data.SetData("PNG", false, pngMemoryStream);</code>
從剪貼簿檢索影像時,請依下列順序檢查不同的資料格式:PNG、DIB、點陣圖、影像。
<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>
附加工具:
透過採用這些方法,可以更有效地處理影像透明度,避免在複製到剪貼簿過程中遺失透明資訊。
以上是將映像複製到 Windows 剪貼簿時如何保持透明度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!