在System.Windows.Forms.Panel(在C#和.NET 4.5.1中)中,我必须使用两条交叉垂直线跟随光标位置。 使用ControlPaint.DrawReversibleLine somtimes部分或整个旧行仍然存在。 这种情况以随机的方式发生并适用或不适用于风格:
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true)
正如MSDN中所建议的那样。
使用十字光标暂时解决但我必须这样做。 如果有人能给我提示...... 谢谢 D.R。
答案 0 :(得分:0)
忘记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
事件重新绘制..