Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2013, 22:14   #1
Kulik Lilia
Новичок
Джуниор
 
Регистрация: 25.12.2013
Сообщений: 2
По умолчанию как сделать аэрограф в Delphi

помогите пожалуйста...как сделать аэрограф в делфи?? чтобы был аэрозоль, типа как в Paint и в нем можно было регулировать размер распыления...
Kulik Lilia вне форума Ответить с цитированием
Старый 27.12.2013, 08:01   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Правый клик выбрать цвет аэрографа
Клик колесом - очистить форму от нарисованного.
Левый клик и двигание мышкой (с зажатой левой кнопкой) - рисование текущим аэрографом.

Регулируемые параметры - ширина и высота области аэрографа, плотность аэрографа, цвет.
Комментов почти нет, не хвастаюсь, но пишу понятный код. Ну коли будут сложности в понимании - могу прокомментить.
Вложения
Тип файла: zip aero.zip (214.7 Кб, 20 просмотров)
phomm вне форума Ответить с цитированием
Старый 27.12.2013, 20:34   #3
Kulik Lilia
Новичок
Джуниор
 
Регистрация: 25.12.2013
Сообщений: 2
По умолчанию

там его мне не открывает...какую-то ошибку выкидывает(((
Kulik Lilia вне форума Ответить с цитированием
Старый 27.12.2013, 20:47   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я распаковал, да при открытие проекта в Delphi говорит об ошибке, вроде в файле ресурсов. Но все же открывает. По крайней мере исходник и форму видно.
И что интересно, в самой Delphi не компилируется, находит ошибки, а приложенный exe-файл - запускается и работает.

Последний раз редактировалось type_Oleg; 27.12.2013 в 20:50.
type_Oleg на форуме Ответить с цитированием
Старый 27.12.2013, 21:12   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Допустим д7 и не съест, это исходник более поздней версии, 2009(?). xe2 открыл, откомпилировал и работает

PS съел и Д7

// Application.MainFormOnTaskbar := True;
и
dlgColor1.Execute;
вместо
dlgColor1.Execute(Handle);
При открытии IGNORE ALL

Рисует, но кончилось ошибкой деления но ноль когда один из сколбаров вверх до упора установил. Видимо ignore all повлиял или ошибки при чтении ресурса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.12.2013 в 21:20.
Аватар вне форума Ответить с цитированием
Старый 28.12.2013, 08:25   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Я работаю под д2007 практически всегда, изредка д7 , дхе2, fpc
Cобираю под д7. Пофиксю соотв проблемы.
да и деление на 0 не предусмотрел.. минимальный размер сделаю 5 (в настройках скролбаров через Object Inspector можно поменять)
Исправление colordialog'a сделал через проверку версии компилятора, если вдруг кто будет запускать не на д7.
Ну а если Вам, Kulik Lilia надо "попроще, то просто удалите всё что в скобках тут dlgColor1.Execute(.....)
Вложения
Тип файла: zip aero.zip (195.7 Кб, 8 просмотров)

Последний раз редактировалось phomm; 28.12.2013 в 08:27.
phomm вне форума Ответить с цитированием
Старый 02.01.2014, 12:19   #7
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Пиксельный аэрограф аля паинт:
пусть есть точка (X,Y), куда тыкнули мышкой
и есть радиус распыления R
и есть функция random(A), выдающая числа от 0 до A-1

тогда при каждом клике в (X,Y) надо выводить точку по координатам (XP,YP), где
XP = X-R+random(2*R+1)
YP = Y-R+random(2*R+1)
и точка будет выводиться в пределах квадрата (по X в пределах от X-R до X+R, по Y в пределах от Y-R до Y+R)

если хотим круг, то можно еще проверку сделать на расстояние от точки (X,Y) до (XP,YP), что оно меньше радиуса
do
XP = X-R+random(2*R+1)
YP = Y-R+random(2*R+1)
until (sqrt((XP-X)*(XP-X)+(YP-Y)*(YP-Y))<=R)

для увеличения плотности можно по каждому клику (или по движению мышки с нажатой кнопкой) выводить не 1 точку, а N точек.
blackstrip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать таймер в Delphi? kotaina Общие вопросы Delphi 9 16.07.2013 23:23
Как сделать имитацию нажатия в delphi? ilsen Помощь студентам 3 18.12.2010 18:45
как сделать бронирования на Delphi Demckiy Общие вопросы Delphi 4 02.11.2010 22:34
Как сделать линейку в Delphi blackstersl Общие вопросы Delphi 4 25.07.2009 18:49
Как сделать сетку в Delphi? -HunteR- Общие вопросы Delphi 2 14.02.2009 17:25