wxDC и рисование Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
kiricheikov
Earned a small fee
Earned a small fee
Posts: 14
Joined: Mon Jul 11, 2011 3:27 pm

wxDC и рисование

Post by kiricheikov » Mon Jul 11, 2011 3:40 pm

Здравствуйте

Я новичок в виджете, знаком с ним вторую неделю, возникла небольшая заморочка:
вообще пишу программу по постройке графиков функции, создал интерфейс, при нажатии на кнопку оно считывает функцию и передает на процедурку, которая возвращает массив координат. Теперь мне по этим координатам надо построить график. НО! Оно хочет чтобы я подключил ивент пейнт, тоесть мне надо как-то засунуть в функцию по оброботке ивента еще 1 ивент, который будет срабатывать в какой-то момент, как это сделать я не знаю.. Запутанно объяснил, вот еще код дам:

Code: Select all

void MyFrame::OnButtonBuild(wxCommandEvent& event)
{
string func;
int minX,minY,maxX,maxY;
minX=wxAtoi(m_textCtrl14->GetValue());
maxX=wxAtoi(m_textCtrl15->GetValue());
minY=wxAtoi(m_textCtrl16->GetValue());
maxY=wxAtoi(m_textCtrl17->GetValue());
func=string(m_textCtrl13->GetValue());
CParser <double> cp(func,minX,maxX,minY,maxY);
cp.Build();//тут 2 массива создаются
wxPaintDC dc(this);
drawPane->graph(cp,dc); // тут должен рисоваться график, drawPane- наследный класс от wxPanel
}
На данный момент при нажатии на кнопку оно выдает wxPaintDC may be created only in evt_paint handler

MCVS 2008 C++

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: wxDC и рисование

Post by borr_1 » Tue Jul 12, 2011 4:13 am

У формы есть событие EVT_PAINT рисовать нужно по нему/в нем. Смотри пример в samples/drawing
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

kiricheikov
Earned a small fee
Earned a small fee
Posts: 14
Joined: Mon Jul 11, 2011 3:27 pm

Re: wxDC и рисование

Post by kiricheikov » Tue Jul 12, 2011 9:21 am

да, но как связать evt_paint и evt_button, в котором я сейчас собственно и нахожусь?

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: wxDC и рисование

Post by borr_1 » Tue Jul 12, 2011 9:48 am

добавь глобальную переменную bool в приват по кнопке делай ее тру. а в пейнт проверяй если тру рисуй что там тебе надо. как-то так
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

kiricheikov
Earned a small fee
Earned a small fee
Posts: 14
Joined: Mon Jul 11, 2011 3:27 pm

Re: wxDC и рисование

Post by kiricheikov » Tue Jul 12, 2011 2:02 pm

почти разобрался, теперь возникла такая проблема, у меня 2 ивента пейнт, 1 рисует сетку координат, второй график. Когда я жму построить график, насколько я понимаю, сетка перекрывает график, можно ли как-то сделать сетку прозрачной? ну или как-то на бэкграунд её, даже не знаю..

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: wxDC и рисование

Post by borr_1 » Wed Jul 13, 2011 11:34 am

2 ивента пейнт, 1 рисует сетку координат, второй график
Это как? А сразу и график и сетку рисовать нельзя?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: wxDC и рисование

Post by SteelRat » Wed Jul 13, 2011 12:24 pm

Простейший пример отрисовки http://wiki.wxwidgets.org/WxDC
После обновления данных графика вызывай Refresh
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64

kiricheikov
Earned a small fee
Earned a small fee
Posts: 14
Joined: Mon Jul 11, 2011 3:27 pm

Re: wxDC и рисование

Post by kiricheikov » Thu Jul 14, 2011 9:46 am

да, проблема была именно в 2 ивентах, когда засунул в 1 то стало норм=)) правда при точности в 0,001 тупит малеха, но то такое=) Всем спс

Qens
In need of some credit
In need of some credit
Posts: 1
Joined: Mon Apr 30, 2012 8:46 am

Re: wxDC и рисование

Post by Qens » Mon Apr 30, 2012 8:49 am

Можно было проще сделать....вызывать не wxPaintDC, а wxClientDC http://docs.wxwidgets.org/stable/wx_wxc ... wxclientdc

Post Reply