Простое рисование wxPaintDC Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Простое рисование wxPaintDC

Post by SmileGobo » Tue Oct 20, 2009 5:18 pm

Осваиваю рисование, поглядел пример соорудил слудующее:

Code: Select all

GUIFrame::GUIFrame( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxFrame( parent, id, title, pos, size, style ){
    ...
    m_draw=new wxPaintDC(this);
    m_draw->SetPen( wxPen( wxT("black"),30, wxSOLID) );
    m_draw->SetBrush(wxBrush(wxColour(0,0,0)));
    m_draw->DrawLine(0,0,150,150);
}
Не рисует ни в какую, может забыл какую инициализацию провести, может надо после рисования еще что-то сделать, в самплах не нашел.

PS Почему экземпляры класса, объявляются динамически создаваемыми, в том числе и wxPaintDC?
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Re: Простое рисование wxPaintDC

Post by tan » Tue Oct 20, 2009 6:36 pm

SmileGobo wrote:Осваиваю рисование, поглядел пример
соорудил слудующее:

Code: Select all

GUIFrame::GUIFrame( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxFrame( parent, id, title, pos, size, style ){
    ...
    m_draw=new wxPaintDC(this);
    m_draw->SetPen( wxPen( wxT("black"),30, wxSOLID) );
    m_draw->SetBrush(wxBrush(wxColour(0,0,0)));
    m_draw->DrawLine(0,0,150,150);
}
Круто! Где такие примеры находят??? :shock:
Прямо в конструкторе рисуешь?
SmileGobo wrote: Не рисует ни в какую, может забыл какую инициализацию провести, может надо после рисования еще что-то сделать, в самплах не нашел.

PS Почему экземпляры класса, объявляются динамически создаваемыми, в том числе и wxPaintDC?
А слабо нормальный пример, типа drawing посмотреть и взять за образец? Ну и почитать кое что для начала:
http://docs.wxwidgets.org/stable/wx_dco ... dcoverview
http://wiki.wxwidgets.org/Drawing_on_a_panel_with_a_DC
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Tue Oct 20, 2009 7:04 pm

Для пробы можно и в конструкторе порисовать, а зассылочки спасибо методом тыка угадал. Класс wxPaintDC я так понял не предназначен для работы с фреймом, для этого нужен wxClientDC.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Tue Oct 20, 2009 7:36 pm

SmileGobo wrote:Для пробы можно и в конструкторе порисовать
Попробовать, конечно, можно. Только результат будет нулевой :)
Тут все просто, если хочешь рисовать основное содержимое окна (панели, etc) - обрабатывай PaintEvent и рисуй в нем используя wxPaintDC (wxBufferedPaintDC).
SmileGobo wrote: а зассылочки спасибо методом тыка угадал. Класс wxPaintDC я так понял не предназначен для работы с фреймом, для этого нужен wxClientDC.
Не совсем так. Во всех случаях, если рисование происходит в обработчике PaintEvent, НЕОБХОДИМО использовать wxPainDC. wxClientDC ( и подобные) используют для рисования (как правило, динамического, типа при перетаскивании объекта мышкой) за пределами этого обработчика. Например в обработчике движения мышки.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

Post Reply