加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:08:25 所属栏目:百科 来源:网络整理
导读:我可以用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);
我可以用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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读