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


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


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


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


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


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



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

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

Наверх




Память: 0.57 MB
Время: 0.013 c
15-1195735621
Bruther
2007-11-22 15:47
2007.12.23
Как сделать чтобы программа работала


2-1195904979
PASZLIB
2007-11-24 14:49
2007.12.23
Большие числа


3-1187087591
ari_9
2007-08-14 14:33
2007.12.23
зависимые ListSource для Lookup компонент. как лучше ? (+)


15-1195649726
Черный Шаман
2007-11-21 15:55
2007.12.23
Linux в школы


4-1180815593
Arexander
2007-06-03 00:19
2007.12.23
Консоль на форме в PageControl. Как задать координаты размещения?