gpt4 book ai didi

c# - 使用 Graphics.DrawImage() 绘制带透明度/Alpha channel 的图像

转载 作者:可可西里 更新时间:2023-11-01 07:42:52 26 4
gpt4 key购买 nike

我正在复制图像。 (我的实际代码是调整图像大小,但这与我的问题无关。)我的代码看起来像这样。

Image src = ...

using (Image dest = new Bitmap(width, height))
{
Graphics graph = Graphics.FromImage(dest);
graph.InterpolationMode = InterpolationMode.HighQualityBicubic;
graph.DrawImage(src, 0, 0, width, height);
dest.Save(filename, saveFormat);
}

除非 src 是从具有透明胶片(例如 GIF)或 alpha channel (例如 PNG)的图像加载的,否则这似乎工作得很好。

如何让 DrawImage() 将透明胶片/alpha channel 传输到新图像,然后在保存文件时保留它们?

最佳答案

这很不清楚,有很多你没说。透明度最大的问题是你看不到它。您跳过了几个步骤,没有明确指定新位图的像素格式,根本没有初始化它,也没有说明您使用的输出格式。有些人不支持透明度。因此,让我们制作一个使其清晰可见的版本。来自 paint.net 中看起来像这样的 PNG 图像:

enter image description here

使用这段代码

        using (var src = new Bitmap("c:/temp/trans.png"))
using (var bmp = new Bitmap(100, 100, PixelFormat.Format32bppPArgb))
using (var gr = Graphics.FromImage(bmp)) {
gr.Clear(Color.Blue);
gr.DrawImage(src, new Rectangle(0, 0, bmp.Width, bmp.Height));
bmp.Save("c:/temp/result.png", ImageFormat.Png);
}

生成这张图片:

enter image description here

您可以清楚地看到蓝色背景,所以透明度起作用了。

关于c# - 使用 Graphics.DrawImage() 绘制带透明度/Alpha channel 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10658994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com