当前位置: 首页 > 知识库问答 >
问题:

C#将透明PNG复制到剪贴板

慕祯
2023-03-14

这是我目前拥有的:

//reads file into an System.Drawing.Image
FileStream fs = new FileStream(fileLocation, FileMode.Open, FileAccess.Read);   
Image image = Image.FromStream(fs);
fs.Close();

//add text to image via System.Drawing.Graphics
Bitmap myBitmap = new Bitmap(image);
Graphics g = Graphics.FromImage(myBitmap);
g.DrawString(textToAdd, new Font("Tahoma", 14), System.Drawing.Brushes.Black, new PointF(0, 0));

//save modified image back to disk (transparency works)
myBitmap.Save(fileLocation, System.Drawing.Imaging.ImageFormat.Png);

//Copy to clipboard (transparent areas are now gray)
System.Windows.Forms.Clipboard.SetImage(myBitmap);

共有1个答案

章子航
2023-03-14

默认情况下,Windows剪贴板不支持透明性,但您可以将多种类型的内容放在剪贴板上,以确保大多数应用程序都能在其中找到它们可以使用的某种类型。通常,除了普通的非透明剪贴板位图格式之外,如果将图像同时以PNG和DIB格式放在剪贴板上,大多数应用程序将至少能够使用其中一种格式来获得它们支持的透明格式的图像。

我在这个答案中详细说明了如何做到这一点(复制到和粘贴从):

https://stackoverflow.com/a/46424800/395685

 类似资料:
  • 我试图将png文件复制到程序中的剪贴板,并在粘贴到另一个程序(例如ms office、paint、photoshop)时保持其alpha通道。问题是,在大多数节目中,alpha频道都会变成黑色。我已经在网上搜索了好几个小时,找不到解决办法。我使用的代码是: 有没有办法在Java中维护alpha通道?我尝试过将png转换为BuffereImage、Image等,并将其粘贴到剪贴板,但没有任何效果。

  • 问题内容: 如何将BufferedImage存储到系统剪贴板中? 问题答案: 这是从这里获得的工作代码,已成功测试

  • 问题内容: 首先,关于SO将图像复制到python中的剪贴板的问题导致答案用PIL和win32clipboard将图像写入python中的Windows剪贴板?,这仅对Python 2.x有用。-我尝试过,但是没有用。我克服了一个问题:Python 3.0中没有StringIO和cStringIO模块 ,但是碰到了另一个: 因此,对于Python 3再次提出相同的问题-如何在Python 3中将图

  • 2.如果用户在excel表格中复制,则应易于复制,即使用户试图在记事本中复制,也应以表格格式打印。 3.添加一些元数据到剪贴板,以确定pojo何时我们将再次导入表。 为了将pojo列表转换为表格格式,我使用了jtable,但无法将所有jtable内容导出到剪贴板。 --pojo.java 当我试图将字符串值复制到剪贴板时,它是工作的,但当我试图复制pojo时,它是不工作的。

  • 问题内容: 我已经实现了回收卡视图,并想使用按钮单击方法来复制cardView的内容。cardview中有两个文本,我只想复制内容,不同的卡片不同。我怎样才能做到这一点?这是我的Cardview适配器。 v.content.getText()。toString(),无法解析内容。 问题答案: 尝试以下

  • 将一个字符串复制到剪贴板。 仅作为用户操作的结果(即,在 click 事件侦听器中)。 创建一个新的 <textarea> 元素,用提供的数据填充它,并将其添加到 HTML 文档中。 使用 Selection.getRangeAt() 来存储选择的范围(如果有的话)。 使用 document.execCommand('copy') 复制到剪贴板。 从HTML文档中删除 <textarea> 元素。