2016-12-13 5 views
0

Я разрабатываю GUI, который строит линию между двумя точками, которые пользователь выбирает. И он имеет фоновый график всех линий, соединяющих все точки (он связывается с wx.EVT_PAINT, поэтому он не исчезает при изменении размера)Как масштабировать график, используя wxpython?

Однако я не могу найти способ масштабирования этих участков при изменении размера Рамка. Сюжет всегда остается того же размера.

Кто-нибудь знает, как увеличить или уменьшить размер графика пропорционально, когда я изменяю размер рамки? Работает ли sizer здесь? Спасибо за любую помощь!

This is the original size

This is what it looks like when I shrink it

+0

Вы позиционируете wxPoints статически или динамически? – macroland

ответ

0

Ответ зависит от координат, которые вы используете для точек. Если вы хотите, чтобы график всегда вписывался в ваше окно, самым простым было бы использовать координатное пространство [0, 1]x[0, 1] и использовать wxDC::SetLogicalScale() с GetClientSize().x и .y в качестве параметров.

Обратите внимание, что вам также необходимо аннулировать ваше окно в обработчике wxEVT_SIZE.

+0

Большое вам спасибо! Я понял! –

0

Благодарим VZ за ответ, который выглядит лучше, чем мое решение.

Сначала я нормализую координаты этих точек, разделив их с максимальными x и y среди всех точек.

Затем в функции «print» я использовал функцию GetSize() и умножался на нормализованные координаты.

Смежные вопросы