我正在尝试在与其上的光标位置对应的白色矩形上绘制一条水平线。
public static void CreateMapHistoGramModifiedByColourBar(int LineYindex)
{
float[] dashValues = { 1, 1, 1 };
Pen blackPen = new Pen(Color.Black, 1);
blackPen.DashPattern = dashValues;
Point P1 = new Point(0, LineYindex);
Point P2 = new Point(RefBarWidth, LineYindex);
using (Graphics g = Graphics.FromImage(Image.FromFile(WaferMapHistogramFileName)))
{
g.DrawLine(blackPen, P1, P2);
}
}
以上代码似乎对保存的图像没有任何作用。我该如何解决这个问题?
答案 0 :(得分:0)
使用
Cursor.Position.Y
和Cursor.Position.X
获取鼠标在屏幕上的位置。然后,您可以将这些偏移来计算您的白色矩形在表格上的位置。
如果您希望在移动鼠标时刷新此行,请将重绘/重绘事件与鼠标移动事件MouseMove
联系起来。如果在重绘
PictureBox
使用pictureBox1.InitialImage = null;
内绘制
答案 1 :(得分:0)
判断这一行:
上面提到的代码似乎没有对保存的图像做任何事情
听起来你想在图像上画一条线,然后将新图像保存回来。目前你所做的只是加载一个Image
对象,借鉴它然后丢弃它:
using (Graphics g = Graphics.FromImage(Image.FromFile(WaferMapHistogramFileName)))
{
g.DrawLine(blackPen, P1, P2);
}
请注意,Image
类还会实现IDisposable
,因此您应该将其处理掉。
把所有这些放在一起,你应该得到这样的东西:
using (Image image = Image.FromFile(WaferMapHistogramFileName))
using (Graphics g = Graphics.FromImage(image))
{
g.DrawLine(blackPen, P1, P2);
image.Save(@"Save somewhere, here: WaferMapHistogramFileName?");
}
请注意,将图片保存回WaferMapHistogramFileName
将覆盖原始图片。
旁注;从这一行:
对应光标位置
在图像上绘制一条线,根据光标在其上的位置判断。如果是这种情况,您应该确保偏移光标位置,因为它会在Screen
,Form
或Control
上为您提供位置。