C# 在位图上以交互方式绘制线条
我需要允许用户在位图上画线。线条应该以交互方式绘制,我指的是使用典型代码执行的一些操作,为用户提供有关绘制内容的视觉反馈:C# 在位图上以交互方式绘制线条,c#,winforms,C#,Winforms,我需要允许用户在位图上画线。线条应该以交互方式绘制,我指的是使用典型代码执行的一些操作,为用户提供有关绘制内容的视觉反馈: private void MainPictureBox_MouseDown( object sender, MouseEventArgs e) { DrawingInProgress = true ; Origin = new Point (e.X, e.Y); } private void Main
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);
}
}
当然,我使用List.Add在main picturebox_MouseUp中跟踪点,以便在绘制事件中绘制线条(为了简单起见,未显示代码)
如果没有背景图像,只需用背景色覆盖前一行即可完成,例如:
g.DrawLine(BackgroundColorPen, Origin, PreviousEnd);
g.DrawLine(OverlayPen, Origin, End);
但在背景不一致的情况下,这是不可能的
使由points:Origin,PreviousEnd定义的矩形无效,然后使用Update()会使渲染非常混乱。我想知道如何执行这项任务,我正在考虑以下可能的方法:
有人能给我一个最好的提示吗?我真的迷路了。我的解决方案如下:
为此,我强烈推荐WPF。winforms是一项非常古老的技术,没有人再关心它了,由于缺乏硬件加速,它不支持丰富、快速、交互式的UI。WPF支持更好地处理基于图形的UI,因为它是基于DirectX的硬件加速底层引擎。感谢您的提示,但我正在编辑现有程序,因此无法更改我使用的技术。对于“交互式”行,请使用。如果你画两次同一条线,它将恢复原来的状态。堆叠控件在大多数情况下根本不起作用。对不起,“透明”在WinForms中用词不当。