gpt4 book ai didi

c# - 从 png 文件添加剪贴画

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:58 24 4
gpt4 key购买 nike

我在将剪贴画(从 png 文件)添加到 bmp 对象时遇到问题。我在 jpeg 图像中添加了一些剪贴画,保存后,我得到了一个谜:保存的图像中存在一些剪贴画,但有些没有。

这是我如何将剪贴画添加到图像的代码:

    using (System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(this._image))
{
gfx.CompositingMode = CompositingMode.SourceOver;
gfx.CompositingQuality = CompositingQuality.HighQuality;
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;


gfx.DrawImage(image, posX, posY, newWidth, newHeight);
gfx.Save();
}

任何人都可以解释我做错了什么或者为什么会出现这种情况吗?

编辑:当我在 ASP.NET 应用程序中使用此代码时会发生这种情况,当我在 Windows 应用程序中使用它时一切都很好

最佳答案

我不确定这是否是您问题的原因,但是 gfx.Save() 行不会将您绘制的图像保存回图像,而是保存 的状态>图形 对象。为了将更改保存回图像,请确保调用 Image.Save() 方法并仔细检查以确保您没有在代码中的某处恢复以前的图像。关于 Graphics.Save 方法的更多信息可以在这里找到:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.save(v=vs.100).aspx .

更新

您在评论中写道这是一个透明度问题。如果是这个原因,请查看从文件加载剪贴画图像的代码。这也可能是由图像文件中使用的各种像素格式引起的。将您的图像加载算法更改为类似这样的算法可能会解决问题:

  • 加载您的背景图片,假设它是这样完成的:Image backgroundImg = new Bitmap(backgroundImgPath);
  • 创建一个新的空图像作为所有图像的基础:this._image = new Bimap(backgroundImg.Width, backgroundImg.Height, PixelFormat.Format32bppArgb);
  • 使用 gfx.CompositingMode = CompositingMode.SourceCopy; 将 backgroundImg 的内容绘制到 this._image 上;
  • 然后,您可以像现在一样绘制剪贴画(只需注释掉 gfx.Save(); 方法)

如果这有帮助,请告诉我。

关于c# - 从 png 文件添加剪贴画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890675/

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