我在将cliparts(从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();
}
anybode可以解释我做错了什么或为什么会出现这种情况?
编辑: 它发生在我在ASP.NET应用程序中使用此代码时,当我在Windows应用程序中使用它时一切都很好
答案 0 :(得分:0)
我不确定这是否是您的问题的原因,但是行gfx.Save()
不会将您绘制的图像保存回图像,而是保存Graphics
对象的状态。为了将更改保存回图像,请务必调用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);
backgroundImg
this._image
的内容绘制到gfx.CompositingMode = CompositingMode.SourceCopy;
上
gfx.Save();
方法)如果这有帮助,请告诉我。