我需要能够通过以下方式比较两个不同的图像:
图像彼此重叠显示,因此首先只有一个图像可见。当将鼠标光标悬停在图像上时,这定义了分割图像的垂直线的 X 位置,显示第一张图像的一部分到该行的左侧,第二张图像的其余部分位于该行的右侧。
这基本上应该用作两个具有相同内容的图像的质量比较。
这是一张希望能说明我意图的图片:
我需要能够通过以下方式比较两个不同的图像:
图像彼此重叠显示,因此首先只有一个图像可见。当将鼠标光标悬停在图像上时,这定义了分割图像的垂直线的 X 位置,显示第一张图像的一部分到该行的左侧,第二张图像的其余部分位于该行的右侧。
这基本上应该用作两个具有相同内容的图像的质量比较。
这是一张希望能说明我意图的图片:
您可以使用拆分器控制。分离器 一侧放置一个图片控件 另一侧放置其他图片控件
我能够通过使用 SplitContainer 和自定义绘图来解决这个问题。正如 Vasanthakumar 的回答的评论中所述,纯粹使用图片框是不够的,因为您将无法将右图像与左图像(表单的左上角)对齐在同一起点。
我所做的是以下内容:
this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved);
带有要显示的图像的自定义子集。这有效地允许生成我需要的覆盖。
我的部分实现显示了绘图逻辑:
Bitmap bmp = new Bitmap(gImg2.Width, gImg2.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(gImg2, 0, 0, new Rectangle(e.SplitX, 0, gImg2.Width - e.SplitX, gImg2.Height), GraphicsUnit.Pixel);
}
pictureBox2.Image = bmp;