투명 이미지를 클립보드에 복사
많은 개발자들이 투명한 이미지를 클립보드에 복사할 때 투명성을 유지하는 데 어려움을 겪습니다. 기본적으로 Windows 클립보드는 투명도를 지원하지 않습니다.
클립보드 데이터의 투명성
클립보드 데이터의 투명성을 지원하려면 이미지가 여러 형식으로 포함되어야 합니다.
투명하게 이미지 복사
투명도를 유지하면서 이미지를 복사하려면 다음 코드를 사용하세요.
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 pngMemStream = new MemoryStream()) using (MemoryStream dibMemStream = new MemoryStream()) { // 作为标准位图,不支持透明度 data.SetData(DataFormats.Bitmap, true, imageNoTr); // 作为PNG。GIMP会优先选择此格式而不是其他两种。 image.Save(pngMemStream, ImageFormat.Png); data.SetData("PNG", false, pngMemStream); // 作为DIB。许多应用程序(错误地)将其识别为ARGB。 Byte[] dibData = ConvertToDib(image); dibMemStream.Write(dibData, 0, dibData.Length); data.SetData(DataFormats.Dib, false, dibMemStream); // 'copy=true' 参数表示在操作后可以安全地释放MemoryStream。 Clipboard.SetDataObject(data, true); } }
클립보드에서 이미지 가져오기
클립보드에서 이미지를 검색하려면 다음 코드를 사용하세요.
public static Bitmap GetClipboardImage(DataObject retrievedData) { Bitmap clipboardimage = null; // 顺序:尝试PNG,然后尝试32位ARGB DIB,然后尝试普通的Bitmap和Image类型。 if (retrievedData.GetDataPresent("PNG", false)) { MemoryStream png_stream = retrievedData.GetData("PNG", false) as MemoryStream; if (png_stream != null) using (Bitmap bm = new Bitmap(png_stream)) clipboardimage = ImageUtils.CloneImage(bm); } if (clipboardimage == null && retrievedData.GetDataPresent(DataFormats.Dib, false)) { MemoryStream dib = retrievedData.GetData(DataFormats.Dib, false) as MemoryStream; if (dib != null) clipboardimage = ImageFromClipboardDib(dib.ToArray()); } if (clipboardimage == null && retrievedData.GetDataPresent(DataFormats.Bitmap)) clipboardimage = new Bitmap(retrievedData.GetData(DataFormats.Bitmap) as Image); if (clipboardimage == null && retrievedData.GetDataPresent(typeof(Image))) clipboardimage = new Bitmap(retrievedData.GetData(typeof(Image)) as Image); return clipboardimage; }
위 방법을 사용하면 개발자는 투명도를 지원하는 애플리케이션에서 투명도를 유지하면서 클립보드의 투명 이미지를 효율적으로 처리할 수 있습니다.
위 내용은 투명도를 유지하면서 어떻게 투명한 이미지를 Windows 클립보드에 복사하여 붙여넣을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!