首页 > 解决方案 > 时间:2019-06-10 标签:c#drawing,circleguesoutform

问题描述

我试图在我的表格中画一个圆圈。但对我来说很奇怪,我将表单宽度和高度设置为固定数字,我对圆圈做同样的事情,但圆圈图形超出了表单。

private void Form3_Paint(object sender, PaintEventArgs e)
{        
    this.SuspendLayout();

    gr = this.CreateGraphics();
    gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

    Brush fill_circ3 = Brushes.Blue;

    Pen ellipse_pen = new Pen(Color.Blue);            
    ellipse_pen.Width = (float)2.0;

    this.Width = this.Height = 400;
    Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
    gr.DrawEllipse(ellipse_pen, rect);

    this.ResumeLayout();
}

Rectangle 构造函数的第 3 和第 4 个参数定义了圆的宽度和高度。

看到我得到的圈子

在此处输入图像描述

为什么圆圈会超出表格??!我已将表格和圆圈的大小设置为相同!!!!

标签: c#drawinggeometry

解决方案


这是因为您使用的是 Window 大小,而不是“客户端”大小。只需用以下代码替换您的代码:

gr.DrawEllipse(ellipse_pen, this.ClientRectangle);

控件的客户区是控件的边界,减去滚动条、边框、标题栏和菜单等非客户元素。


推荐阅读