Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengekalkan Ketelusan Semasa Menyalin Imej ke Papan Klip Windows?
Cara mengekalkan ketelusan semasa menyalin imej ke papan keratan
Masalah: Apabila menyalin imej PNG lutsinar ke papan keratan, ketelusan sering hilang.
Sebab:
Penyelesaian:
<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>
Cara paling boleh dipercayai untuk meletakkan imej dengan sokongan ketelusan ke dalam papan keratan ialah menggunakan penstriman PNG.
<code class="language-c#">byte[] bm32bData = ImageUtils.GetImageData(bm32b, out stride); // PNG格式的线条是反向的。 bm32b.RotateFlip(RotateFlipType.Rotate180FlipX); data.SetData("PNG", false, pngMemoryStream);</code>
Apabila mendapatkan semula imej daripada papan keratan, semak format data yang berbeza dalam susunan ini: PNG, DIB, Peta Bit, Imej.
<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>
Alat Tambahan:
Dengan menggunakan kaedah ini, anda boleh mengendalikan ketelusan imej dengan lebih cekap dan mengelakkan kehilangan maklumat ketelusan semasa menyalin ke papan keratan.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Ketelusan Semasa Menyalin Imej ke Papan Klip Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!