crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Кисточка., Как сделать?
holmuk
  опции профиля:
сообщение 2.8.2011, 9:14
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.8.2011
Пользователь №: 2780

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




Репутация:   0  


Мне вот захотелось сделать кисточку в своей программе, как в фотошопе. Я так понимаю, что берется и qpaint'ом рисуется круг и при нажатии кнопки эти круги рисуются с большой частотой. Как это реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.8.2011, 11:12
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Сама кисть обычно реализуется как некая картинка (QImage) заданного размера, содержимое этой картинки, как правило, альфаканал видимой части области, далее подобная штука используется как шаблон при рисовании содержимого на картинку назначения, но это только в общих чертах и в самом простом варианте
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
holmuk
  опции профиля:
сообщение 2.8.2011, 11:26
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.8.2011
Пользователь №: 2780

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




Репутация:   0  


Цитата(wiz29 @ 2.8.2011, 12:12) *
Сама кисть обычно реализуется как некая картинка (QImage) заданного размера, содержимое этой картинки, как правило, альфаканал видимой части области, далее подобная штука используется как шаблон при рисовании содержимого на картинку назначения, но это только в общих чертах и в самом простом варианте

Щелк-картинка, щелк-картинка, а как сделать так, чтобы с высокой частотой картинки рисовались?

Извините, что я такой тупой...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.8.2011, 12:27
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(holmuk @ 2.8.2011, 12:26) *
Щелк-картинка, щелк-картинка, а как сделать так, чтобы с высокой частотой картинки рисовались?


Готовых средств в Qt как ты понимаешь нет для решение таких задач, тебе нужно писать подобное самому. Самый простой способ, сделать некий рисовальщик, который бы обводил заданную пользователем траекторию, выбранной (ну или заданной) кистью.
Схематично нужно реализовать следующее:
1. В Gui потоке заполняешь некий QPainterPath (например) получая события о положениях мыши
2. В Отдельном потоке рисуешь в заданную картинку отпечатки кисти с определенной частотой на траектории, обычно частота (расстояние между центрами кистей) определяется в %х от размера кисти (если говорить про Photoshop)
3. В Gui выводишь обновленные данные

это в общих чертах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.8.2011, 17:37
Сообщение #5


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

Группа: Сомодератор
Сообщений: 9654
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(wiz29 @ 2.8.2011, 14:12) *
Сама кисть обычно реализуется как некая картинка (QImage) заданного размера
нет это просто новый курсор создаётся на основе рисунка.

Цитата(holmuk @ 2.8.2011, 14:26) *
Щелк-картинка, щелк-картинка
а если не "щёлк, щёлк", а "надавливаем кнопку мыши, тянем мышь, отпускаем кнопку мыши", тогда как ты представляешь внутренний процесс?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
holmuk
  опции профиля:
сообщение 2.8.2011, 18:23
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.8.2011
Пользователь №: 2780

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.8.2011, 18:37) *
а если не "щёлк, щёлк", а "надавливаем кнопку мыши, тянем мышь, отпускаем кнопку мыши", тогда как ты представляешь внутренний процесс?

Не знаю... for ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.8.2011, 8:24
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(Litkevich Yuriy @ 2.8.2011, 18:37) *
Цитата(wiz29 @ 2.8.2011, 14:12) *
Сама кисть обычно реализуется как некая картинка (QImage) заданного размера
нет это просто новый курсор создаётся на основе рисунка.

Интересно, а как рисовать курсором на картинке? (ну например заданной текстурой, или с динамическим изменением размера), а если размер кисти 1к на 1к пикселей?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.8.2011, 17:58
Сообщение #8


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

Группа: Сомодератор
Сообщений: 9654
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


holmuk, изучи внимательно (!) пример -Scribble (examples\widgets\scribble) из комплекта Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
holmuk
  опции профиля:
сообщение 4.8.2011, 10:53
Сообщение #9


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.8.2011
Пользователь №: 2780

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 3.8.2011, 18:58) *
holmuk, изучи внимательно (!) пример -Scribble (examples\widgets\scribble) из комплекта Qt.

Спасибо, буду изучать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 4.8.2011, 17:10
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

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




Репутация:   3  


Цитата
Не знаю... for ?

http://doc.qt.nokia.com/latest/qtimer.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.3.2019, 19:09