如何在.NET中叠加图像

我有一个.png图像,我希望覆盖在基本图像上。

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

问题是我没有坐标位置。

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

您可以创建新图像,首先渲染背景图像,然后在其上渲染叠加图像。 由于叠加具有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); 

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

如果您使用的是Winforms,则可以使用一些类似的图形绘制function 。 获取图像的尺寸应该很容易,假设您正在使用PictureBox,以下属性应该足够:

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

同样,对于WPF图像:

 myImage.Margin