Название: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 27, 2012, 20:38 Всем привет,
продолжаю работу над семестровым проектом по разработки GUI. Некоторые уже видели мои посты с полукруглыми панелями. Теперь вот на полукруглой панели собираюсь сделать цветовую палитру. Все у тех же ребят из ArtRage это выглядит так. (http://i47.fastpic.ru/big/2012/1127/84/9d294c8576d6c6dc12b343ea62d45b84.jpg) Не хочу особо блистать оригинальностью - это решение я нахожу наиболее оптимальным, так как задача требует экономии экранного пространства. Сказать честно, пока у меня есть только такая мысль: Внешнее кольцо с выбором цвета поместить статическим PixMapom, а цвет просто считать по радиане. Следующее широкое кольцо - не знаю что и делать. Прошу вашего совета. третье с надписью не нужно и четвертое тоже не знаю. Хотя с четвертым все же попроще. Просто нарисовать векторно и заливать цветом Будьте добры, дайте дельный совет. Покажите направление. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 28, 2012, 01:09 Хотя со вторым широким кольцом можно наверное сделать и так:
Загрузить картинку как QImage с каким-нибудь "опорным" цветом, а потом смещать ей Hue а в качестве значения получать пиксель из имиджа и отображать его в четвертом кольце. Правда тогда сразу следующий вопрос как его изменить этот оттенок. что-то я в QPaintDevice на первый взгляд ничего похожего не нашел. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Bepec от Ноябрь 28, 2012, 07:26 Залить градиентов нельзя?
Он же вам как раз подходит. А значение тупо получать цветом пикселя. QLinearGradient с несколькими опорными точками. PS % на 60 уверен, что такое сделать можно. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: xokc от Ноябрь 28, 2012, 08:50 QLinearGradient с несколькими опорными точками. Он на то и Linear, что градиент по прямой (в одном направлении) строить будет, а здесь нужно в двух, да ещё и по кругу.Я бы сделал статический 8-битный QImage с палитрой, изменяемой в зависимости от цвета, выбранного во внешнем кольце. И никаких плясок с градиентами. Да, а в чём смысл вычислять цвет пикселя по радиане? Он же и так уже есть в самом пикселе? Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Nitro от Ноябрь 28, 2012, 10:19 Да, а в чём смысл вычислять цвет пикселя по радиане? Он же и так уже есть в самом пикселе? А по моему правильно если он собирается менять hue. Там же цвет от 0 до 360. Просто получил градус, пересчитал его, вот тебе и цвет. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: xokc от Ноябрь 28, 2012, 13:48 А по моему правильно если он собирается менять hue. Там же цвет от 0 до 360. Просто получил градус, пересчитал его, вот тебе и цвет. Это правильное замечание с академической точки зрения, если бы речь шла о моём упрощении при использовании в качестве базового 8-битного QImage с палитрой (там только 256 цветов, но с точки зрения простоты реализации, я бы этим пренебрёг). Но с точки расчета цвета не понял. Пиксель под курсором ведь уже и так светится нужным цветом - зачем его заново рассчитывать? Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 28, 2012, 14:16 Рисовать попиксельно. Для каждой точки получаете угол и радиус
Код Теперь в каком кольце пиксель Код Каждое следующее кольцо использует данное что пользователь выбрал на предыдущем (внешнем). Напр клик в кольцо hue - код тот же, просто сохраняете hue как userHue Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: twp от Ноябрь 28, 2012, 14:31 а QConicalGradient не подойдет?
его можно глянуть в демке demos/gradients/ Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Nitro от Ноябрь 28, 2012, 14:40 Но с точки расчета цвета не понял. Пиксель под курсором ведь уже и так светится нужным цветом - зачем его заново рассчитывать? Ну, мне кажется только по одной причине. Мы же не знаем какую картинку он там запихнет и на сколько качественной она будет и действительно ли колличество пикселей будет соответствовать количеству возможных цветов. Если ему точность не нужна, тогда можно пиксель получать, а если он хочет точные значения, тогда угол считать как Igors написал. Кстати, классно все написал и просто. Я бы замороченее сделал :D Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 28, 2012, 14:43 а QConicalGradient не подойдет? Удивлен этим (и другими) ответами. Конечно "попользоваться готовым" - дело хорошее, но во всем же надо знать меру. Здесь самому написать быстрее чем пример найти (только). Или это уже "на принцип" пошло (типа "дело чести")? :)его можно глянуть в демке demos/gradients/ Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: twp от Ноябрь 28, 2012, 15:17 ну понятное дело, что изобретать велосипед очень полезно хотя бы для своего же развития :) Хотя скопипастить готовый код почти одно и тоже, что использовать готовый класс (имхо). Я только дал еще одну идею, а пускай ТС сам выбирает, что ему лучше подойдет.
Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 28, 2012, 19:49 Опять всем привет, и спасибо за советы.
Уже начал делать. Вроде бы, пока, все получается. :) Отвечу на некоторые комментарии. Ну, вообще-то я еще только учусь и опыта в Qt всего два месяца или чуть больше, поэтому хочу все делать сам. Особенно велосипеды. На них можно быстрее научиться. Кстати, Nitro прав на счет расчета цвета. Картинка все-равно идеальную градацию цвета не дает из-за размера. Чтобы пиксель из внешнего кольца читать, надо тогда идеально правильное кольцо с идеально правильной заливкой нарисовать. На счет градиентов - не все так просто потому, что там надо два градиента комбинировать. А это навряд ли возможно. Поэтому в любом случае решение с картинкой остается самым лучшим. Я правда еще не совсем представляю как я буду смещать hue в изображении. Но надеюсь, что найдутся грамотные люди, которые дадут добрый совет. А вообще, всем большое спасибо за советы и просто человеческую отзывчивость. PS И персональное спасибо Igors'у за код ;D Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: twp от Ноябрь 29, 2012, 00:06 На счет градиентов - не все так просто потому, что там надо два градиента комбинировать. А это навряд ли возможно. можно и больше, по сути нет ограниченияНазвание: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 00:57 Ну, вот что получилось:
(http://i26.fastpic.ru/big/2012/1129/6f/e4de8254473e4c3fdbc65dbe43d48b6f.jpg) теперь Hue я получаю (там в нижнем углу выводится значение) и с его помощью надо теперь пересчитать картинку. ??? А как? :D Вот этого то я пока и не знаю. И признаюсь честно - до сих пор с подобными задачами не сталкивался, поэтому даже не знаю с чего подойти. Я так понимаю нужно теперь как-то весь Pixmap попиксельно обходить и менять значение для Hue для каждого пикселя. Правильно? Или так очень медленно будет? Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 01:00 можно и больше, по сути нет ограничения Ну если возможно, то это конечно очень интересно. Надо будет обязательно посмотреть. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: xokc от Ноябрь 29, 2012, 09:11 Я так понимаю нужно теперь как-то весь Pixmap попиксельно обходить и менять значение для Hue для каждого пикселя. Правильно? На оба вопроса - да. Будет быстрее, если использовать SIMD инструкции процессора, но в рамках курсовика это уже видимо перебор. Попробуй - может устроит быстродействие и так.Или так очень медленно будет? Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 29, 2012, 09:41 Я так понимаю нужно теперь как-то весь Pixmap попиксельно обходить и менять значение для Hue для каждого пикселя. Правильно? Нет :) Просто опять все рисуете но для второго кольца используете найденное значение hue.Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: GreatSnake от Ноябрь 29, 2012, 11:16 Или так очень медленно будет? Да, так будет очень медленно, т.к. Pixmap хранится на стороне графической системы.Для таких задач нужно из QPixmap-а получить QImage и уже всю обработку делать в нём. Я бы вообще всё делал в QImage, т.к. QPixmap оправдан только для статичных изображений. К тому же у нас есть double-buffer. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 29, 2012, 12:08 Что-то заехали "явно не туда" :) Какой QPixmap? Что Вы собираетесь в нем хранить если нужно перерисовывать при каждом клике пользователя? Зачем "обходить имедж" и что-то менять? Так получается куда больше расчетов чем при простой перерисовке всего. Откуда взялся миф о "медленности"? На пиксель: один atan2 + sqrt + setHsv - так это кошкины слезы, а не расчеты.
Выложите проект - там на-все про-все час, дольше обсуждаем Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: GreatSnake от Ноябрь 29, 2012, 12:16 Если вопрос ко мне, то я имел в виду не частный случай)
Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 13:29 ОК, тогда выкладываю проект,
а то так мы говорим очень не предметно, а в связи с тем, что мои знания в этой области крайне ограничены (я всего то на третьем семестре) то мне вообще трудно принимать участие в обсуждении, когда все становится таким конкретным и неконкретным одновременно. Вы, правда, сильно не критикуйте, собираю для начала так, чтобы работало. Код еще не причесан. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 13:29 Второй файл из архива
Кстати, базовым цветом для второго кольца я взял красный потому, что его Hue = 0.0 = 1.0 (Как ни парадоксально это звучит :) ) Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 29, 2012, 16:57 В конце-концов "склеил" архивы и распаковал. Проект создался и запустился нормально, но палетка почему-то не показывается ??? После отчаянных но безуспешных попыток разобраться в Вашем коде - плюнул и написал с нуля (attach)
Рамочки и др бижутерию сами дорисуете Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 18:24 Аааааааааааааааааах ёлки-палки, воооооооооон как !!!!!!! ;D ;D ;D
А я думал надо вообще готовую картинку брать и ее перерисовывать. Да, Igors, огромная благодарность тебе. Все очень понятно и ясно теперь. Большое, большое спасибо. Думаю, что многим наверное тоже будет интересно. Да на таком примере, я на самом деле многому научусь. Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 18:49 Ну тогда уважаемые господа, позвольте закончить обсуждение словами большой благодарности ко всем кто принимал участие в обсуждении, и кто стремился помочь словом и делом.
Еще раз персональная благодарность Igors И скажу вам точно, с такими людьми как вы можно многого добиться! Спасибо! Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Igors от Ноябрь 29, 2012, 19:43 Да на таком примере, я на самом деле многому научусь. Я прекрасно понимаю что это только "так говорится", но если есть желание - вот пара задачек1) Сделайте чтобы размеры по осям могли быть неодинаковы (четвертушка эллипса вместо круга) 2) Видите как прет алиас ("зубы", jaggy) там где кольца соприкасаются. Уберите Название: Re: Прошу совета по теме создания цветовой палитры Отправлено: Hrundel от Ноябрь 29, 2012, 19:51 2) Видите как прет алиас ("зубы", jaggy) там где кольца соприкасаются. Уберите Кстати, вот этим уже начал заниматься :D Правда все-равно скоро придется бросить проект. Хотя, очень не хочется. Но нужно заниматься английским. Я его уже 2 раза завалил. Если в третий раз завалю, выкинут из универа. |