Два метода рисования, Какой выбрать? |
Здравствуйте, гость ( Вход | Регистрация )
Два метода рисования, Какой выбрать? |
leff |
29.12.2010, 19:51
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 29.12.2010 Пользователь №: 2312 Спасибо сказали: 0 раз(а) Репутация: 0 |
не так давно начал изучение Qt... суть вопроса вот в чем... я делаю графический интерфейс, все элементы управления наследуются от стандартных элементов управления Qt, но должны выглядеть в едином рисованном стиле... для этого я создаю классы наследники для каждого элемента управления, перегружаю paintEvent... мои задачи можно в принципе решить двумя путями... первый путь: рисовать элементы управления с помощью QPainter... второй путь: нарисовать элементы управления в виде кистей в другой программе (в виде кистей, так как элементы управления могут принимать разный цвет) и рисовать ими... первый вариант выглядит более предпочтительным, так как в случае изменения размера элемента он будет верно отрисовываться без потери качества, но на практике некоторые моменты рисования реализовать сложно... второй вариант в принципе адекватен, но как лучше загружать и хранить эти кисти пока не понятно... вопрос в том, какой вариант из двух вы считаете наилучшим и почему? то есть лучше рисовать элементы QPainter'ом или вставлять на их место готовые картинки из файлов? какие преимущества и недостатки, вы считаете, есть у обоих методов? каковы они в отношении скорости?
|
|
|
ufna |
29.12.2010, 20:28
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
я чет не понял - а во втором случае картинки ты как вставлять будешь?
Суть в том, что ни тот, ни другой метод - не решение проблемы, а лишь эрзац-варианты. И: 1) все рисуется через QPainter 2) чем больше рисуется уже нарисованного в картинку ранее - тем быстрее (кэширование) 3) все зависит от конкретных случаев |
|
|
leff |
29.12.2010, 20:39
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 29.12.2010 Пользователь №: 2312 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
igor_bogomolov |
29.12.2010, 20:49
Сообщение
#4
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
leff, здесь на самом деле не понятно что посоветовать. Вы бы приложили примеры того что рисовать собираетесь, там уже виднее станет
|
|
|
Litkevich Yuriy |
29.12.2010, 20:50
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
leff, изучи таблицы стилей в Qt. Возможно оно тебе подойдёт.
|
|
|
leff |
29.12.2010, 21:26
Сообщение
#6
|
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 29.12.2010 Пользователь №: 2312 Спасибо сказали: 0 раз(а) Репутация: 0 |
вот набросал пример элемента аналога QDial по первому методу (цвета "maroon")... сначала рисуется шкала (с помощью drawArc), затем рисуется эллипс с градиентной кистью (базовый цвет и осветленный базовый цвет), затем рисуется указатель - линия (переношу систему координат в центр, разворачиваю эту систему координат в зависимости от значения, рисую перпендикулярную линию)... при этом элемент зависим от трех цветов (цвет шкалы и обводки, базовый цвет элемента, цвет указателя)... можно было бы сделать по второму методу: нарисовать шкалу, элемент и указатель допустим в черно-белые png-файлы с прозрачностью и использовать их как кисти в соответствии с цветами... то, что я сделал - самое простое... а вот допустим такую крутилочку (как на картинке, только вид сверху) нарисовать получится много кода, даже если придумать как: |
|
|
||
igor_bogomolov |
29.12.2010, 22:49
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
leff, так всё элементарно. Если бы сразу картинку дали, то и ответ быстрее получили бы.
На самом деле вам нужно использовать векторную графику в формате svg. Вооружитесь каким-нибудь вменяемым редактором, например inkscape и доками по QtSvg В качестве примера скачайте qt-embedded-widgets, там есть примеры аналогичных виджетов |
|
|
leff |
29.12.2010, 23:01
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 29.12.2010 Пользователь №: 2312 Спасибо сказали: 0 раз(а) Репутация: 0 |
да, спасибо, похоже это то, что мне нужно!
|
|
|
Текстовая версия | Сейчас: 21.12.2024, 17:35 |