ControlPaint.DrawReversibleLine问题

时间:2014-09-15 13:16:28

标签: c#

在System.Windows.Forms.Panel(在C#和.NET 4.5.1中)中,我必须使用两条交叉垂直线跟随光标位置。 使用ControlPaint.DrawReversibleLine somtimes部分或整个旧行仍然存在。 这种情况以随机的方式发生并适用或不适用于风格:

SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true)

正如MSDN中所建议的那样。

使用十字光标暂时解决但我必须这样做。 如果有人能给我提示...... 谢谢 D.R。

1 个答案:

答案 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事件重新绘制..