Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как обратиться к графическим средствам


Автор: Competitor 29.12.2005, 18:48
Как обратиться к графическим средствам для данной формы из отдельного класса. Как, например, нарисовать прямоугольник на форме? На C++.

Автор: arilou 29.12.2005, 19:11
Обработать событие Form.Paint, и рисовать, используя PaintEventArgs.Graphics. Не dispose'ить Graphics после использования.

Автор: Competitor 30.12.2005, 14:37
Не работает. Как исправить?
Код

//Form1.h
this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Pole::Dra);
//Pole.h
System::Void Dra(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e);
//Pole.cpp
System::Void Pole::Dra(System::Object ^sender, System::Windows::Forms::PaintEventArgs ^e)
{
        Pen^ r = gcnew Pen( Color::Red ,3.0f );
        Rectangle rect = Rectangle(10,10,100,100);
        e->Graphics->DrawRectangle(r, rect);
}

Автор: mr.DUDA 30.12.2005, 16:11
Что не работает? Не компилится, или не рисует? По коду вроде всё правильно... (ох, не люблю я этот MC++)

Автор: Competitor 30.12.2005, 17:03
Ошибка при компиляции:
error C3754: delegate constructor: member function 'Pole::Dra' cannot be called on an instance of type 'Combatengineer::Form1 ^const '
Указывает на строку №2 в моем предудущем сообщении.

Автор: mr.DUDA 30.12.2005, 17:06
Метод "Dra" должен либо принадлежать классу Form1, либо быть статическим, чтобы форма могла подвязать его на событие Form1::Paint

Автор: Competitor 30.12.2005, 22:05
Цитата
Метод "Dra" должен быть статическим

Как сделать его статическим? Просто подписать слово static в h-файле? Не получается.

Автор: mr.DUDA 30.12.2005, 22:34
Цитата(Competitor @ 30.12.2005, 21:05)
Как сделать его статическим? Просто подписать слово static в h-файле? Не получается.

Не только в h-файле, в cpp тоже.

Автор: Competitor 1.1.2006, 16:00
Если в обоих файлах подписать static, появляются такие ошибки:
error C2724: 'Pole::Dra' : 'static' should not be used on member functions defined at file scope (с указанием на строку 7)
и
error C3350: 'System::Windows::Forms::PaintEventHandler' : a delegate constructor expects 1 argument(s) (с указанием на строку 2)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)