我想获取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对象将整个表单着色为黑色?
答案 0 :(得分:3)
如果您喜欢这样,那么您将只是在窗口所在的屏幕上绘画。窗口不知道这一点,当窗口因任何原因更新时,它将被重绘而没有颜色。
使用Paint
事件在窗口上绘制图形。为事件添加事件处理程序,只要重新绘制窗口,就会调用它。事件参数包含您应该用于绘制的Graphics
对象。
使用Width
的{{1}}和Height
属性作为宽度和高度,而不是DisplayRectangle
和X
属性。但是,当Y
对象被裁剪到要更新的区域时,您可以使用Graphics
方法用颜色填充它。
答案 1 :(得分:1)
我的表单上有两个按钮(在设计视图中)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));
}
}
答案 2 :(得分:1)
您 使用Graphics
和DisplayRectangle
执行此操作吗?
表单有一个名为BackColor的属性,您可以将其设置为黑色:
private void Form1_Load(object sender, EventArgs e)
{
this.BackColor = Color.Black;
}