如何在.NET中叠加图像

时间:2012-10-25 11:57:42

标签: c#

我想要在基本图像上叠加.png图像。

我的叠加图片只包含一条红色斜线。我需要将红线覆盖在基本图像上,与叠加图像中的坐标相同。

问题是我没有坐标位置。

我需要用C#以编程方式找到它。叠加图像将始终是透明的或白色背景。从叠加图像中找到线坐标的代码是什么?

2 个答案:

答案 0 :(得分:11)

您可以创建新图像,首先渲染背景图像,然后在其上渲染叠加图像。由于叠加具有alpha通道,并且线位于应该放置的位置(我的意思是在线的顶部和左侧有不透明的空间),因此不需要坐标。插图代码:

Image imageBackground = Image.FromFile("bitmap1.png");
Image imageOverlay = Image.FromFile("bitmap2.png");

Image img = new Bitmap(imageBackground.Width, imageBackground.Height);
using (Graphics gr = Graphics.FromImage(img))
{
    gr.DrawImage(imageBackground, new Point(0, 0));
    gr.DrawImage(imageOverlay, new Point(0, 0));
}
img.Save("output.png", ImageFormat.Png);

答案 1 :(得分:0)

如果您使用的是WPF,为什么不使用path作为叠加层而不是图像(如果它是简单的线条)?这将允许它缩放到任何大小,并具有操纵其尺寸的方法。

如果您使用的是Winforms,则可能会使用一些similar graphics drawing capabilities。获取图像的尺寸应该很容易,假设您正在使用PictureBox,以下属性就足够了:

myPictureBox.Top
myPictureBox.Bottom
myPictureBox.Left
myPictureBox.Right

同样,对于WPF图像:

myImage.Margin