9

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

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

问题是我没有坐标位置。

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

4

2 回答 2

17

您可以创建新图像,先渲染背景图像,然后在其上渲染叠加图像。由于叠加层具有 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);
于 2012-10-25T13:46:32.763 回答
0

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

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

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

同样,对于 WPF 图像:

myImage.Margin
于 2012-10-25T13:31:23.647 回答