画像をクリップボードにコピーするときに透明度を維持する方法
問題: 透明な 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 中国語 Web サイトの他の関連記事を参照してください。