Рисование в Form_Load - PullRequest
       26

Рисование в Form_Load

0 голосов
/ 14 января 2012

Итак, у меня есть:

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
     DrawBackground();
}
private: System::Void DrawBackground(){ 
     Graphics^ g1=this->CreateGraphics();
     SolidBrush^ p1 = gcnew SolidBrush(System::Drawing::Color::Gray);
     g1->FillRectangle(p1,90,150,600,150);
}

Это должно загрузить этот прямоугольник при загрузке формы, но это не так. Зачем ?? Как правильно написать это?

1 Ответ

1 голос
/ 14 января 2012

Вы не можете нарисовать в событии Load, форма еще не видна. Также не всегда правильно использовать CreateGraphics (). Все, что вы рисуете, не выживет до следующей перерисовки. Вместо этого переопределите метод OnPaintBackground. Как это:

protected:
    virtual void OnPaintBackground(PaintEventArgs^ e) override {
        __super::OnPaintBackground(e);
        SolidBrush brush(System::Drawing::Color::Gray);
        e->Graphics->FillRectangle(%brush,90,150,600,150);
    }

Обратите внимание на использование семантики стека для кисти (без шляпы), которая обеспечивает автоматическое удаление кисти.

...