【问题标题】:C# - Drawing top image over background image (alpha channel) - WinFormC# - 在背景图像上绘制顶部图像(alpha 通道) - WinForm
【发布时间】:2011-07-19 19:48:10
【问题描述】:

我有这个带有 alpha 通道的顶部图像,我需要将这个图像放在另一个背景图像上,而顶部图像的 alpha 通道显然保持不变。

现在我已经看过一些有关 Canvas 的教程,但我的项目似乎无法识别 Canvas。

有人知道为什么我不能使用 Canvas 或如何将这 2 张图片放在一起吗?

【问题讨论】:

  • WPF 还是 WinForms?我假设您没有包含所需的参考资料。 “似乎不认识”到底是什么意思?能否请您发布代码和错误消息?
  • @Tigran 我不太清楚,看过一些关于它的教程,但我认为它是 Java。
  • @Vlad WinForms,后来只是一张asp的图片
  • @Julian:在 WinForms 中,您没有 Canvas 概念。为什么不直接使用 DrawImage?你试过了吗?
  • @Tigran,是的,我做到了,但是 alpha 通道不起作用,所以我只看到了顶部的图像。

标签: c# winforms image alpha-transparency


【解决方案1】:

好的,我会尝试回答:加载图片后,或多或少是这样的,伪代码:

Bitmap bmp = new Bitmap("MyCooolSemiTransparentImage.png"); 
bmp.MakeTransparent(colorHaveToBeRenderedTransparent);

colorHaveToBeRenderedTransparent 是一种颜色,在将其加载到Bitmap 对象后,结果透明。

编辑

如果 alphachannel 没问题,这里有一个简单的教程如何在 WinForms 上绘制图像:

msdn: DrawImage

在你的表单中提供的调用方法 OnPaint 覆盖,你会得到你想要的。

希望这会有所帮助。

问候。

【讨论】:

  • 感谢 Tigran,但我没有“colorHaveToBeRenderedTransparent”,因为那部分已经是 alphachannel。
  • 我不是反对者。虽然我用普通绘画尝试过,但是 alphachannel 无法正常工作,只是覆盖了背景图像。无论如何,如果您确定它应该工作,我会再试一次并再次查看我的图像。谢谢!
  • 说“封面”我知道上面没有更透明的颜色。正确的 ?如果是这样,请获取必须透明的颜色的确切值,并在 colorHaveToBeRenderedTransparent 变量中使用它。
猜你喜欢
  • 2013-04-10
  • 2021-05-06
  • 2015-02-06
  • 2018-02-11
  • 2017-08-03
  • 1970-01-01
  • 2018-02-25
  • 1970-01-01
相关资源
最近更新 更多