ControlPaint.DrawReversibleLine issue
本文关键字:issue DrawReversibleLine ControlPaint | 更新日期: 2023-09-27 18:21:51
在System.Windows.Forms.Panel(在C#和.NET 4.5.1中)中,我必须用两条相交的垂直线跟随光标位置。使用ControlPaint.DrawReversibleLine有时会保留部分或整个旧线条。这是以随机的方式发生的,无论是否应用样式:
设置样式(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true)
如MSDN中所建议的。
使用交叉光标暂时解决,但我必须这样做。如果有人能给我提示。。。非常感谢。D.R.
忘记DrawReversibleLine
!
这将做你告诉我们你想做的事:
Point mouse = Point.Empty;
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
mouse = e.Location;
panel1.Invalidate();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
if (mouse != Point.Empty)
{
e.Graphics.DrawLine(Pens.Blue, 0, mouse.Y, panel1.ClientSize.Width, mouse.Y );
e.Graphics.DrawLine(Pens.Blue, mouse.X, 0, mouse.X, panel1.ClientSize.Height );
}
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
mouse = Point.Empty;
panel1.Invalidate();
}
但它不会做你没有告诉我们的事情。
注意:您需要更新上绘制该面板的其他内容-我希望没有任何内容,否则需要从Paint
事件中重新绘制。。