C# 如何在.NET中覆盖图像

C# 如何在.NET中覆盖图像,c#,C#,我有一个.png图像,我希望覆盖在基础图像上 我的叠加图像只包含一条红色斜线。我需要得到红线叠加在基础图像在同一坐标,因为它是在叠加图像 问题是我没有坐标位置 我需要用C#以编程方式找到它。覆盖图像将始终为透明或白色背景。从叠加图像中查找线坐标的代码是什么?如果您使用的是WPF,为什么不在叠加图像中使用a而不是简单线的图像?这将允许它缩放到任何大小,并具有操纵其尺寸的方法 如果您使用的是Winforms,那么可以利用一些。获取图像的尺寸应该很容易,假设您使用的是PictureBox,以下属性就足

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

我的叠加图像只包含一条红色斜线。我需要得到红线叠加在基础图像在同一坐标,因为它是在叠加图像

问题是我没有坐标位置


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

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

如果您使用的是Winforms,那么可以利用一些。获取图像的尺寸应该很容易,假设您使用的是PictureBox,以下属性就足够了:

myPictureBox.Top
myPictureBox.Bottom
myPictureBox.Left
myPictureBox.Right
类似地,对于WPF图像:

myImage.Margin

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

什么是“同一坐标”?也许一些插图会让它更清晰。如果在重叠图像中,我的线条从20,20开始,在120,50结束,那么我需要线条出现在我的基础图像中,在20,20,在120,50结束。谢谢,但是使用上面的代码,第二个图像与背景图像重叠。例如,如果我的背景图像是某张脸,并说用户已对其进行了编辑以将耳朵添加到该脸上。两个图像的保存方式不同。我想以这样一种方式合并图像,即脸应该在用户添加图像的正确位置有耳朵。谢谢,我第一次使用您的代码时遇到了一些问题,因为我生成的图像大于我的屏幕大小。这导致部分图像被裁剪。我使用gr.DrawImage(imageBackground,new System.Drawing.Rectangle(0,0,imageBackground.Width,imageBackground.Height))解决了这个问题;gr.DrawImage(imageOverlay,新系统。绘图。矩形(0,0,imageBackground.Width,imageBackground.Height));代替gr.DrawImage(imageBackground,新点(0,0));gr.DrawImage(图像叠加,新点(0,0));