c# – 鼠标点击绘制一个矩形

前端之家收集整理的这篇文章主要介绍了c# – 鼠标点击绘制一个矩形前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以用mouseClick绘制一个矩形吗?我的代码到目前为止没有工作.你可以帮我吗?
private void panel1_MouseClick(object sender,MouseEventArgs e)
{
    Graphics g = this.CreateGraphics();
    Pen pen = new Pen(Color.Black,2);

    g.DrawRectangle(pen,100,200);
}

解决方法

编辑版本:

没有太多的猜测你想做什么:

private void panel1_Click(object sender,EventArgs e) {
    using (Graphics g = this.panel1.CreateGraphics()) {
        Pen pen = new Pen(Color.Black,2);
        Brush brush = new SolidBrush(this.panel1.BackgroundColor);

        g.DrawRectangle(pen,200);

        pen.Dispose();
    }
}

您的代码无法正常工作,因为它是在窗口(这)上绘制矩形,并且绘制的矩形然后被您的面板隐藏.

在这样一个简单的情况下,通常覆盖Paint是一个太多的工作,只需在面板上绘制一个矩形.但是,以这种方式绘制矩形是有效的,但是当重新绘制表单时,矩形将被取消(例如通过最小化并随后再次显示该形式).如果矩形必须持久,则必须使用绘图方法将必须(例如)在点击事件中创建矩形,然后在绘制事件中绘制矩形(请参阅roygbiv的解决方案)注意:如果与绘图方法一起使用,则应保持效率高于可能,因为绘制方法经常被称为verry.

编辑2

您不需要清除背景,因为您的矩形将始终在同一个地方绘制.为了在用户隐藏的点绘制矩形(这是您想要的假设),您应该将代码移动到鼠标向下的事件,例如:

private void panel1_MouseDown(object sender,MouseEventArgs e) {
    using (Graphics g = this.panel1.CreateGraphics()) {
        Pen pen = new Pen(Color.Black,2);
        Brush brush = new SolidBrush(this.panel1.BackColor);

        g.FillRectangle(brush,this.panel1.Bounds);  // redraws background
        g.DrawRectangle(pen,e.X,e.Y,20,20);

        pen.Dispose();
        brush.Dispose();
    }
}

猜你在找的C#相关文章