crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Два метода рисования, Какой выбрать?
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  


Цитата(ufna @ 29.12.2010, 20:28) *
я чет не понял - а во втором случае картинки ты как вставлять будешь?

что значит как? например используя QPixmap...
а почему ни тот, ни второй вариант не является решением?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.12.2010, 20:49
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


leff, здесь на самом деле не понятно что посоветовать. Вы бы приложили примеры того что рисовать собираетесь, там уже виднее станет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.12.2010, 20:50
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 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-файлы с прозрачностью и использовать их как кисти в соответствии с цветами...

то, что я сделал - самое простое... а вот допустим такую крутилочку (как на картинке, только вид сверху) нарисовать получится много кода, даже если придумать как:

:unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


да, спасибо, похоже это то, что мне нужно! :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2019, 5:27