我需要允许用户在位图上绘制线条。线条应该以交互方式绘制,我的意思是使用典型代码执行某些操作,向用户提供有关绘制内容的视觉反馈:
private void MainPictureBox_MouseDown( object sender, MouseEventArgs e)
{
DrawingInProgress = true ;
Origin = new Point (e.X, e.Y);
}
private void MainPictureBox_MouseUp(object sender, MouseEventArgs e)
{
DrawingInProgress = false ;
}
private void MainPictureBox_MouseMove(object sender, MouseEventArgs e)
{
if (!DrawingInProgress) return ;
End = new Point (e.X, e.Y);
using( Pen OverlayPen = new Pen( Color .Red, 1.0f))
using (Graphics g = MainPictureBox.CreateGraphics())
{
g.DrawLine(OverlayPen, Origin, End);
}
}
当然,我使用MainPictureBox_MouseUp中的List.Add跟踪点,以便在Paint事件中绘制线条(为简单起见,代码未显示)
如果没有背景图像,只需用背景颜色覆盖上一行就可以很好地完成任务,例如:
g.DrawLine(BackgroundColorPen, Origin, PreviousEnd);
g.DrawLine(OverlayPen, Origin, End);
但是在背景不均匀的情况下这是不可能的。
使点定义的矩形无效:Origin,PreviousEnd然后使用Update()使渲染变得非常混乱。我想知道如何执行这项任务,这些是可能的方法,我正在考虑:
有人能给出最佳方向的暗示吗?我真的迷路了。
答案 0 :(得分:0)
为我工作的解决方案如下: