Получение параметров формы winform (ширина и высота) - PullRequest
2 голосов
/ 14 апреля 2011

Я хочу получить свойства высоты и ширины формы 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?

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

Если вы сделаете это, вы просто будете рисовать на экране там, где находится окно.Окно не знает об этом, и когда окно по какой-либо причине обновляется, оно будет перерисовано без цвета.

Используйте событие Paint для рисования графики в окне.Добавьте обработчик события для события, и он будет вызываться всякий раз, когда окно должно быть перерисовано.Аргументы события содержат объект Graphics, который следует использовать для рисования.

Используйте Width и Height свойства DisplayRectangle в качестве ширины и высоты, а не X и Y свойства.Однако, поскольку объект Graphics обрезается до области, которая должна быть обновлена, вы можете просто использовать метод Clear, чтобы заполнить его цветом.

1 голос
/ 14 апреля 2011

У вас есть , чтобы сделать это, используя Graphics и DisplayRectangle?

Форма имеет свойство с именем BackColor , которое можно просто установить черным:

private void Form1_Load(object sender, EventArgs e)
{
    this.BackColor = Color.Black;
}
1 голос
/ 14 апреля 2011

У меня есть две кнопки на форме (в режиме конструктора) 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));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...