【发布时间】:2015-02-14 00:37:51
【问题描述】:
我的任务是捕获图像,将其复制到剪贴板,然后将其粘贴到下面的应用程序中。我必须能够支持几乎任何富文本字段,并且它必须保持透明度。我当前的解决方案首先呈现白色背景。这是我的代码:
RenderTargetBitmap 包含我希望复制为 .PNG 的图像
public static void CopyImageToClipboard(RenderTargetBitmap b)
{
MemoryStream stream = new MemoryStream();
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(b));
encoder.Save(stream);
Bitmap bmp = new Bitmap(stream);
Bitmap blank = new Bitmap(Convert.ToInt32(b.Width), Convert.ToInt32(b.Height));
Graphics g = Graphics.FromImage(blank);
g.Clear(System.Drawing.Color.White);
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
g.DrawImage(img, 0, 0, Convert.ToInt32(b.Width), Convert.ToInt32(b.Height));
Bitmap tempImage = new Bitmap(blank);
blank.Dispose();
img.Dispose();
bmp = new Bitmap(tempImage);
tempImage.Dispose();
System.Windows.Forms.Clipboard.SetImage(bmp);
stream.Dispose();
}
【问题讨论】:
-
问题是?你不想要白色背景?
-
是的——就像我上面提到的,它必须是透明的。您可能知道,将“透明”位图粘贴到富文本字段会产生灰色背景。
-
g.Clear(System.Drawing.Color.White);那你为什么要这样做? -
Blorgbeard:“我当前的解决方案首先呈现白色背景。”
-
我仍然不明白你为什么要这样做,如果你的问题是不要有白色背景..
标签: c# png transparency clipboard