Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

У кого нибудь есть пример реализации рисования кистью на битмэпе?   Найти похожие ветки 

 
Живописец   (2007-10-27 04:35) [0]

Кисть обычная, круглая, со смазанными краями.


 
pedro nuevo   (2007-10-27 08:43) [1]

Собственно само рисование кистью - есть оставление отпечатка этой кисти с определенной переодичностью на холсте (советую посмотреть как работает кисточка в jasc paint shop pro и какие ее настройки на что влияют). Основная сложность в получении самой кисти (ее мягких границ), здесь не обойтись без математики. Реализовать разгон акварельной кисточки тоже довольно непростая задача. В общем, учить матчасть.


 
antonn ©   (2007-10-27 17:29) [2]


> Основная сложность в получении самой кисти (ее мягких границ),
>  здесь не обойтись без математики.

замечатеьный вывод %)

попиксельно затемнять (или высветлять, изменять короче) область фона, на которую наносится кисть, коефициент затемнения зависит от цвета пикселя на кисти.


 
pedro nuevo   (2007-10-27 17:46) [3]

antonn ©   (27.10.07 17:29) [2]

Ха, а как саму кисть получить (настраиваемую по размеру, прозрачности, мягкости)?
Radial gradient fill-ом вестимо.


 
antonn ©   (2007-10-27 17:51) [4]

canvas.ellipse() + blur если нужно получить только смазаные края.
на крайни случай кисть можно хранить в нескольких экземплярах.


 
pedro nuevo   (2007-10-27 17:54) [5]

antonn ©   (27.10.07 17:51) [4]

Для курсовой сгодится.


 
Живописец   (2007-10-28 01:53) [6]

А может кто-нибудь пример запостить?
Или какие-нибудь библиотечки, где это есть?

У канваса есть функция LineTo. Но она работает только с Pen"ом. Мне бы для кисти что-нибудь такое же простое.


 
Черный Шаман   (2007-10-29 00:14) [7]


> Живописец   (28.10.07 01:53) [6]
>
> А может кто-нибудь пример запостить?
> Или какие-нибудь библиотечки, где это есть?
>
> У канваса есть функция LineTo. Но она работает только с
> Pen"ом.
Мне бы для кисти что-нибудь такое же простое.


Ась? Ты чего хотел?


 
Живописец   (2007-10-29 01:40) [8]

Удалено модератором


 
Живописец   (2007-10-30 01:23) [9]

Удалено модератором


 
ЛшдлуттнСфе   (2007-10-30 02:21) [10]


> Мне бы для кисти что-нибудь такое же простое.


Бруш


 
antonn ©   (2007-10-30 08:57) [11]

продам за 5wmz рисование кистью произвольной формы и произвольной размазаности :)


 
Nic ©   (2007-10-30 09:59) [12]


> antonn ©   (30.10.07 08:57) [11]

За сколько продаш права использования DeskStickers в стороннем коммерческом приложении? Пиши на onicolaev@ya.ru или в асю 234-779-804
Пусть исходник будет не самый свежий или вообще без исходника. Но стиккеры позарез нужны, а времени реализовывать - нет ;)


 
SoDA   (2007-10-30 10:17) [13]

Кстати о стикерах.
Вот нашлись отличные бесплатные стикеры: http://www.tk8.com/easynote.asp


 
Nic ©   (2007-10-30 12:50) [14]


> antonn ©   (30.10.07 08:57) [11]

Я жду ответ :-)


 
Nic ©   (2007-10-30 21:45) [15]

Удалено модератором


 
antonn ©   (2007-10-30 22:04) [16]


> За сколько продаш права использования DeskStickers в стороннем
> коммерческом приложении? Пиши на onicolaev@ya.ru или в асю
> 234-779-804
> Пусть исходник будет не самый свежий или вообще без исходника.
>  Но стиккеры позарез нужны, а времени реализовывать - нет
> ;)

уже не продам, продал проект сторонней конторе, выпущу последнюю ошибко-патч и усе, + некоторое время в поддержке буду говорить, что мой код делает :)


 
antonn ©   (2007-10-30 22:06) [17]


> Кстати о стикерах.
> Вот нашлись отличные бесплатные стикеры: http://www.tk8.
> com/easynote.asp

немножко пиара:)
http://desksoft.ru/index.php?forum=7&th=26


 
SoDA   (2007-10-30 22:20) [18]

antonn ©   (30.10.07 22:06) [17]

Сайт - супер.


 
Nic ©   (2007-10-30 23:06) [19]


> antonn ©   (30.10.07 22:04) [16]

Жаль. Ну чтож, засучим рукова и будем реализовывать :)


 
Прогер   (2007-10-31 02:46) [20]


> Nic ©   (30.10.07 09:59) [12]
>
>
> > antonn ©   (30.10.07 08:57) [11]
>
> За сколько продаш права использования DeskStickers в стороннем
> коммерческом приложении? Пиши на onicolaev@ya.ru или в асю
> 234-779-804
> Пусть исходник будет не самый свежий или вообще без исходника.
>  Но стиккеры позарез нужны, а времени реализовывать - нет
> ;)


Почём платишь за реализацию?


 
Nic ©   (2007-10-31 13:32) [21]


> Прогер   (31.10.07 02:46) [20]

Плачу щедро, требую сурово.
Сделаю сам :) Интересовал программный продукт antonna. Технически реализовать не так уж сложно, но 1) на это надо время 2) у него всё уже реализовано и стильно сделано


 
Живописец   (2007-11-01 01:45) [22]

Может хватит рекламировать?

Кто-нибудь по теме может поделиться куском кода?


 
Живописец   (2007-11-02 01:41) [23]

Допустим я получил картинку кисти. Чёрно-белая картинка. Чёрный пиксель - значит непрозрачный, белый - значит прозрачный. Остальные - полупрозрачные в соответствии с чернотой цвета.

Как мне такой кистью, то есть этой картинкой, провести линию?


 
Nic ©   (2007-11-02 11:32) [24]

..
 Canvas.LineTo(...);
 ..


 
Nic ©   (2007-11-02 11:32) [25]

Можно и на OpenGL :)


 
Nic ©   (2007-11-02 11:36) [26]

Тогда можно с помощью

..
glBegin(gl_Lines);
glVertex2F(x,  y);
..
glEnd();

А если сделаешь объёмную модель наносимого рисунка, будет очень стильно ;) Но тогда код будет малость помудрёнее.


 
Живописец   (2007-11-03 05:03) [27]


> Nic ©   (02.11.07 11:32) [24]
>
> ..
>  Canvas.LineTo(...);


Это пэном рисует, а не брашем.


> Nic ©   (02.11.07 11:32) [25]
>
> Можно и на OpenGL :)


Нет, мне на TBitMap.


 
antonn ©   (2007-11-03 12:36) [28]

типа вот такое надо?
http://desksoft.ru/index.php?downloads=attachments&id=38 (540кб, zip, демо:))


 
TStas ©   (2007-11-04 08:57) [29]

>antonn Ой, какая штука красивая. А там полупрозрачность кисточки как реализована? Вычисляется для пикселов среднее между цветом кисточки и пиксела картинки? Если совсем прозрачная, то цвет пиксела картинки не изменится, и дальше - все ближе к цвету самой кисточки?


 
Nic ©   (2007-11-04 11:08) [30]


> Живописец   (03.11.07 05:03) [27]

0. Не мучай себя. Купи у аntonn пока этого не сделала сторонняя организация со всеми правами на данное решение.
1. С помощью Canvas можно реализовать вполне;
2. можно нарисовать на OpenGL, а выводить куда угодно потом.


 
antonn ©   (2007-11-04 12:16) [31]


> А там полупрозрачность кисточки как реализована?

кисть - готовая grayscale битмапка. Делаю просто альфаблитинг, в качестве альфы беру канал R (все равно серый и каналы равны), а в качестве самих RGB беру цвет из colorbox"а, плюс коефициент прозрачности :) Это для нанесения. Для осветления и затемнения не пользую коефициенты, просто изменяю каналы.


> Купи у аntonn пока этого не сделала сторонняя организация
> со всеми правами на данное решение.

да-да, а то микрософту продам %)


> 1. С помощью Canvas можно реализовать вполне;

вот кстати не предствляю как, потому что будут такие тормоза, что огого. Сейчас сканлайн использую с tbitmap, если перевести все на работу на обычных массивах с блитингом с ММХ - скорости еще значительно добавится (массив с блитингом "просто на асме" уже в 7 раз быстрее сканлайна).

Кстати, про ОГЛ, тут в играх как раз мучаются товарищи с рендером сцены на битмап %)


 
antonn ©   (2007-11-04 12:27) [32]


> Вычисляется для пикселов среднее между цветом кисточки и
> пиксела картинки?

сама форула типа такого:
R_dest:=trunc(R_dest+(R_source-R_dest)*d);
R_dest - изображение-фон, R_source - накладываемое изображение (кисть), d коефициент (в нем собсно и прозрачность кисти)


 
homm ©   (2007-11-04 13:08) [33]

> массив с блитингом "просто на асме" уже в 7 раз быстрее
> сканлайна

Можно и на паскале нормально переписать под битмап, будет не намного тормознее.
У тебя битмап какой, кстати, поди DDB? :)


 
antonn ©   (2007-11-04 13:21) [34]


> У тебя битмап какой, кстати, поди DDB? :)

без понятия, я не заморачивался на коде, оно и так вроде не тормозит :)
делал просто bt:=tbitmap.create; :)


 
Nic ©   (2007-11-04 14:13) [35]


> antonn ©   (04.11.07 12:16) [31]

Может дашь линк на фирму, которая купила стиккеры и располагает правами? Оч. прошу ;-)

p/s Что же ты мне сразу не продал, я ведь раньше хотел купить..


 
Dib@zol ©   (2007-11-04 15:45) [36]

Вота вам. Накропал за 5 мин. Тормозит правда, заррраза ;D Однако, если найду время, перепишу под DIB и работу напрямую с памятью. Как грица, следите за веткой =)

http://webfile.ru/1581400


 
Dib@zol ©   (2007-11-04 15:47) [37]

ЗЫ: Директиву {$R AllData.res} можете закомментировать.


 
Живописец   (2007-11-05 01:53) [38]


> Nic ©   (04.11.07 11:08) [30]
> Купи у аntonn пока этого не сделала сторонняя организация
> со всеми правами на данное решение.


Вообще то вопрос был: Кто-нибудь по теме может поделиться куском кода?

Тем более, что сделано криво. Кисть - это не пунктирная линия, а цельная, и кисть - это мягкие края. А жёсткие края, как там - это карандаш.


 
antonn ©   (2007-11-05 11:16) [39]


> Тем более, что сделано криво.

за 5mwz нужен законченый продукт? а еще лучше сразу поделиться кодом? ха-ха :)


> Кисть - это не пунктирная линия, а цельная, и кисть - это
> мягкие края.

кисть - это накладываемый рисунок различными алгоритмами. сделать так, чтобы он выводится именно линией, а не позициями - дело несложное. Мягкие края присутствуют, видны даже невооруженным глазом.


 
Живописец   (2007-11-06 02:54) [40]


> antonn ©   (05.11.07 11:16) [39]
>
> > Тем более, что сделано криво.
>
> за 5mwz нужен законченый продукт?


Я уже сказал, что бизнесменам надо идти на х.. . Сколько ещё можно кляньчить?


> кисть - это накладываемый рисунок различными алгоритмами.
>  сделать так, чтобы он выводится именно линией, а не позициями
> - дело несложное.


Однако сделано небыло.


> Мягкие края присутствуют, видны даже невооруженным глазом.


Микроскопические края - это не кисть.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.044 c
2-1195904979
PASZLIB
2007-11-24 14:49
2007.12.23
Большие числа


6-1176402933
redlord
2007-04-12 22:35
2007.12.23
TIDHTTPserver в каком потоке выполняется IdHTTPServer1CommandGet


2-1196079946
webpauk
2007-11-26 15:25
2007.12.23
FindFirst, FindNext


2-1195976298
NaRuTo
2007-11-25 10:38
2007.12.23
Помогите поставить точку на координатной плоскости


15-1195586382
Германн
2007-11-20 22:19
2007.12.23
Автоматическое обновление WinXp SP1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский