Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

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

 
Живописец   (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 нужен законченый продукт?


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


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


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


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


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


 
Живописец   (2007-11-06 06:58) [41]

Кстати вопрос по теме, кто видел где-нибудь описания форматов кистей Фотошопа abr-файлов ?


 
Dib@zol ©   (2007-11-06 15:40) [42]

> [41] Живописец   (06.11.07 06:58)

Ну вряд ли в файлах abr кроме данных кисти содержится ещё и алгоритм их работы :) И вообще чем тебе не нравятся антонновская и моя проги? Кисточка не линиями рисует? А это уже надо код изучить и учебничеГ геометрии за 8-й класс почитать - как в системе координат построить точки равномерно распределённые по длине отрезка. И потом, при передвижении кисточки, эти точки отрисовывать.


 
antonn ©   (2007-11-06 19:58) [43]

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


 
Живописец   (2007-11-07 01:21) [44]


> Dib@zol ©   (06.11.07 15:40) [42]
>
> > [41] Живописец   (06.11.07 06:58)
>
> Ну вряд ли в файлах abr кроме данных кисти содержится ещё
> и алгоритм их работы :)


Зато можно понять какие там параметры используются. Например, какой принцип работы кисти которая рисует траву?

Судя по программам-просмотрщикам файлов abr, где-то формат описан. Но вот где?


 
Живописец   (2007-11-17 03:38) [45]


> Dib@zol ©   (06.11.07 15:40) [42]
>
> > [41] Живописец   (06.11.07 06:58)
>
> Ну вряд ли в файлах abr кроме данных кисти содержится ещё
> и алгоритм их работы :) И вообще чем тебе не нравятся антонновская
> и моя проги?


Твоя рисует с разрывами. К его я уже высказал притензии, кроме того он скрывает исходники.

Но в общемя я уже написал свою кисть, лишённую этих недостатоков, так, что вопрос не актуален.

Актуален вопрос про формат фотошоповских кистей. Описаний формата так и не нашёл. Неужели никто не знает?


 
Virgo_Style ©   (2007-11-17 11:11) [46]

> Живописец   (17.11.07 03:38) [45]
> Актуален вопрос про формат фотошоповских кистей. Описаний
> формата так и не нашёл. Неужели никто не знает?


Точно знают в Adobe, но google тоже догадывается:

http://the.sunnyspot.org/gimp/tools.html - open source конвертер abr в gbr
http://cinepaint.org/docs/gbr.html - описание формата gbr


 
Живописец   (2007-11-25 02:29) [47]

Честно говоря, ничего не понял. Там один сишный файл, и три длл-ки без исходников. Подозреваю, что всё дело в них.


 
Johnmen ©   (2007-11-25 03:41) [48]


> Живописец   (25.11.07 02:29) [47]
> Честно говоря, ничего не понял.

А тебе и не надо. Расслабься......


 
Писец   (2007-11-26 02:14) [49]

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



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

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.017 c
2-1196192581
t-t
2007-11-27 22:43
2007.12.23
обращение к ф-ии


2-1196173492
misha_gr
2007-11-27 17:24
2007.12.23
Application.BringToFront


2-1196481525
San1712
2007-12-01 06:58
2007.12.23
Возникает сообщение об ошибке как его обработать ?


15-1195985196
Kostafey
2007-11-25 13:06
2007.12.23
С днем рождения ! 25 ноября


15-1195995531
Умка
2007-11-25 15:58
2007.12.23
МФУ