Masalah: Memelihara ketelusan imej semasa menyalin ke papan keratan Windows.
Papan keratan Windows sememangnya tidak menyokong ketelusan. Walau bagaimanapun, ia boleh mengendalikan pelbagai format data, termasuk PNG, yang memang menyokong saluran alfa (ketelusan).
Untuk mengekalkan ketelusan, gunakan strategi ini:
MemoryStream
dan Image.Save()
.DataObject
.DataObject
daripada papan keratan.<code class="language-csharp">public static void SetClipboardImage(Bitmap image, Bitmap imageNoTr, DataObject data) { Clipboard.Clear(); data ??= new DataObject(); //Null-conditional operator for brevity imageNoTr ??= image; //Null-conditional operator for brevity using (MemoryStream pngMemStream = new MemoryStream()) using (MemoryStream dibMemStream = new MemoryStream()) { data.SetData(DataFormats.Bitmap, true, imageNoTr); image.Save(pngMemStream, ImageFormat.Png); data.SetData("PNG", false, pngMemStream); byte[] dibData = ConvertToDib(image); dibMemStream.Write(dibData, 0, dibData.Length); data.SetData(DataFormats.Dib, false, dibMemStream); Clipboard.SetDataObject(data, true); } } public static Bitmap GetClipboardImage(DataObject retrievedData) { Bitmap clipboardimage = null; if (retrievedData.GetDataPresent("PNG", false)) { MemoryStream pngStream = retrievedData.GetData("PNG", false) as MemoryStream; using (Bitmap bm = new Bitmap(pngStream)) clipboardimage = ImageUtils.CloneImage(bm); } else if (retrievedData.GetDataPresent(DataFormats.Dib, false)) { MemoryStream dib = retrievedData.GetData(DataFormats.Dib, false) as MemoryStream; clipboardimage = dib != null ? ImageFromClipboardDib(dib.ToArray()) : null; } else if (retrievedData.GetDataPresent(DataFormats.Bitmap)) { clipboardimage = new Bitmap(retrievedData.GetData(DataFormats.Bitmap) as Image); } else if (retrievedData.GetDataPresent(typeof(Image))) { clipboardimage = new Bitmap(retrievedData.GetData(typeof(Image)) as Image); } return clipboardimage; }</code>
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!