Форум сайта python.su
Добрый день.
Несколько вопросов по отрисовке.
Нарисовал сетку с шагом 10px и размером 8000 на 8000.
1) В чем нужно указывать размеры (если не в px), для правильной работы на разных разрешениях?
2) Как добавить сетке прозрачности? Читал про битмапы, но мало что понял.
3) Как изначально отобразить центр сетки (4000,4000,4000,4000) по центру канваса?
4) Как научить сетку двигаться с помощью ПКМ? (То есть при видимой (например) области 400 на 300, двигать все содержимое, вернувшись в вопросу №3 отображать по центру канваса сетку с иными координатами)
Спасибо. Очень поможете хотя бы частичными ответами.
П.С. И пятый вопросик забыл. Как этот центральный канвас скролом приближать и отдалять? Уменьшать шаг сетки?
Спасибо.
Отредактировано Ubhra (Дек. 18, 2013 11:10:12)
Прикреплённый файлы: Точечный рисунок.JPG (68,4 KБ)
Офлайн
Могу ответить на многие вопросы. Но нужно знать. Как Вы построили сетку?
P.S. Хотите построить CAD - систему?
Отредактировано 4kpt_II (Дек. 18, 2013 13:16:34)
Офлайн
Это только для понимания как оно работает.
Линии просто отрисовал по всему холсту:
net_x=net_y=10 while net_x<8000: canv_window.create_line(net_x,0,net_x,8000,fill = '#809090') net_x=net_x+10 while net_y<8000: canv_window.create_line(0,net_y,8000,net_y,fill = '#809090') net_y=net_y+10
Отредактировано Ubhra (Дек. 18, 2013 15:01:59)
Офлайн
Итак по-очереди:
UbhraВ пикселях, в пикселях. Но нужно просто высчитывать. Это проще. Сталкивался с тем, что другие величины не всегда отображаются адекватно…
1) В чем нужно указывать размеры (если не в px), для правильной работы на разных разрешениях?
UbhraЯ бы просто рекомендовал использовать светло-серый цвет. Цвет можно установить в параметры fill линии. Еще есть вариант нанести множество png изображений размеров в 1 пиксель с альфапрозрачностью, но я не знаю насколько это будет ресурсоемко да и как потом эту хрень масштабировать.
2) Как добавить сетке прозрачности? Читал про битмапы, но мало что понял.
UbhraМои рекомендации: используейте canvas.create_window(). Это позволит вам настроить отображение этого окна (какая часть внутреннего канваса будет у Вас видна или точку монтирования внутреннего канваса относительно окна). Понимаю, что запутанно говорю, но проще не могу
3) Как изначально отобразить центр сетки (4000,4000,4000,4000) по центру канваса?
UbhraВот тут уже интереснее. Вешаете на нажатие правой кнопки + Motion бинд и обрабатываете событие. В функции обработчике анализируете event.x и event.y. И на его изменения перемещаете объект внутри window (построенного в пункте 2) на нужные пиксели.
4) Как научить сетку двигаться с помощью ПКМ? (То есть при видимой (например) области 400 на 300, двигать все содержимое, вернувшись в вопросу №3 отображать по центру канваса сетку с иными координатами)
UbhraНе надо забывать
П.С. И пятый вопросик забыл. Как этот центральный канвас скролом приближать и отдалять? Уменьшать шаг сетки?
Отредактировано 4kpt_II (Дек. 18, 2013 23:57:56)
Офлайн
Спасибо.
По прозрачности попробую картинками, т.к. как бы не осветлял или затенял линии, при большом количестве на глаза давят :)
Насчет canvas.create_window()
Я понял мысль, в таком случае придется (если правильно понял) окна создавать классами.
Отредактировано Ubhra (Дек. 19, 2013 10:46:07)
Офлайн
UbhraНе обязательно. Просто вкладывать придется одно окно в другое. Если нужен пример - пишите.
Я понял мысль, в таком случае придется (если правильно понял) окна создавать классами.
Ubhra
По прозрачности попробую картинками, т.к. как бы не осветлял или затенял линии, при большом количестве на глаза давят
Отредактировано 4kpt_II (Дек. 19, 2013 12:46:11)
Офлайн