【问题标题】:Obtaining the parameters of the winform form (Width & height)获取winform表单的参数(宽度和高度)
【发布时间】:2011-04-14 16:57:30
【问题描述】:

我想获得一个 winforms 表单的高度和宽度属性以便能够为所有表单着色?

我试过这段代码..

private void Form1_Load(object sender, EventArgs e)
{
    using (Graphics g = this.CreateGraphics())
    {
        Rectangle r=this.DisplayRectangle;
        g.DrawRectangle(Pens.Black, new Rectangle(0, 0, r.X, r.Y));
    }
}

但它没有做这项工作。如何使用图形对象和 Rectangle 对象将整个表单着色为黑色?

【问题讨论】:

  • 我已经回滚了您的编辑,因为它似乎没有任何意义。如果您要求某人澄清他们的答案,这样做是对他们的答案的评论。如果您确实需要对原始问题进行重大更改,请将其发布为“更新”,即保留现有问题文本原样并在下面添加新问题。这将有助于其他人在上下文中理解问题。此外,也许您可​​以更努力地尝试使用您使用的格式 - 它会让人们更容易回答您的问题 =)
  • 对不起,罗布斯,在我通过提供的答案修改了我的算法后,我认为这个问题已经解决了..所以我发布了解决方案,并将其替换为问题

标签: c# winforms graphics


【解决方案1】:

如果您这样做,您将只是在窗口恰好所在的屏幕上绘画。窗口不知道这一点,当窗口因任何原因被更新时,它将被重绘而没有颜色。

使用Paint 事件在窗口上绘制图形。为该事件添加一个事件处理程序,每当必须重绘窗口时都会调用它。事件参数包含一个您应该用于绘图的Graphics 对象。

使用DisplayRectangleWidthHeight 属性作为宽度和高度,而不是XY 属性。但是,由于Graphics 对象被裁剪到要更新的区域,您可以使用Clear 方法为其填充颜色。

【讨论】:

    【解决方案2】:

    我的表单上有两个按钮(在设计视图中)button1_Click 将其绘制为黑色,button2_Click 将表单绘制回控制颜色。

    public partial class Form2 : Form
    {
        private Brush brushToPaint;
    
        public Form2()
        {
            InitializeComponent();
            brushToPaint = SystemBrushes.Control;
        }
    
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.FillRectangle(brushToPaint, this.DisplayRectangle);
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            brushToPaint = Brushes.Black;
            InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle));
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
            brushToPaint = SystemBrushes.Control;
            InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle));
        }
    }
    

    【讨论】:

    • 谢谢,我不知道那个算法..这是做什么的 SystemBrushes.Control;
    • 查看MSDN上的SystemBrushes,简单地说它们是预定义的彩色画笔,由Windows本身使用。比如控制颜色、高亮颜色、非活动窗口颜色等。
    【解决方案3】:

    使用GraphicsDisplayRectangle 执行此操作吗?

    表单有一个名为BackColor 的属性,您可以简单地将其设置为黑色:

    private void Form1_Load(object sender, EventArgs e)
    {
        this.BackColor = Color.Black;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2012-10-10
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多