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

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

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2007, 02:38   #1
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
Вопрос Графический редактор

Здрыствуте помогите пожалуста. Я делаю чето типа паинта и немогу сделать "рисование кистью" как в паинте.Отлавливаю кнопки так:
if HiWord(GetAsyncKeyState(VK_lBUTTON) ) > 0 then
Если пишу pixels(x,y) и быстро веду мышкой, между точками остаются промежутки. Если пишу lineto(x,y) то както тупо между полосами идет линия. Скажите пожалуцта как сделать нормальное рисование кистью как в паинте??
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 21.07.2007, 12:19   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Попробуй по таймеру сделать. Если MouseMoove ловить полюбому с пробелами будет, если точки соединять то ломаная линия, чем быстрее мышкой вести, тем больше ломаная. Делай маленький интервал таймера, и по нему вызывай CursorPos или как там ее (WinAPI). Если она будет возвращать экранные координаты преобразуй их с помощью ScreenToClient.
з.ы. Как это сделано в Паинте понятия не имею.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.07.2007, 23:08   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

В MouseMove добавь такой код:
Код:
       Form1.Image1.Canvas.Brush.Color:=clRed;
       Form1.Image1.Canvas.Pen.Color:=clRed;
       Form1.Image1.Canvas.Pen.Width:=5;
       Form1.Image1.Canvas.LineTo(x,y);
       Form1.Image1.Canvas.MoveTo(x,y);
Задача в том, что придаем толщину линии.(>=1)
Alex21 вне форума Ответить с цитированием
Старый 22.07.2007, 13:44   #4
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

спс все работает!
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 22.07.2007, 13:48   #5
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

ой нет, тот дефект все еще остался. Там иногда соединяются сами проведенные линии
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 22.07.2007, 14:15   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Дара ясновидения у меня никогда не было, опиши проблему подробней.
Alex21 вне форума Ответить с цитированием
Старый 22.07.2007, 19:07   #7
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

ну вобщем когда я зажимаю лклик, веду, потом отпускаю лклик, рисуется линия все норм. Но бывает так:
Я зажимаю лклик, рисую, отпускаю лклик, хочу опять ченить нарисовать, зажимаю лклик, И рисуется какаято линия между этой четрой и прошлой чертой.....
Короче попробуй сам этот код компилировать, посмотришь..
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 22.07.2007, 20:18   #8
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

А у тебя в TForm1.Image1MouseDown есть такое:
Код:
Image1.Canvas.MoveTo(x,y);{Переводим маркер на новую позицию}
down:=true; {Булевская переменная, может называться подругому, 
служит для определения нажатия мыши}

Последний раз редактировалось Alex21; 22.07.2007 в 20:20.
Alex21 вне форума Ответить с цитированием
Старый 23.07.2007, 01:26   #9
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

Image1.Canvas.MoveTo(x,y); это есть
а
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 23.07.2007, 01:27   #10
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

ой
а down не распознает. Это ваще четакое должно быть?
UnD)eaD)Snake вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графический редактор Assassin Общие вопросы C/C++ 6 13.01.2009 10:53
Графический редактор Alex_Bond Общие вопросы .NET 1 14.05.2008 08:55
Графический редактор kommunist Общие вопросы .NET 1 13.01.2008 21:57
графический редактор Art Zin Общие вопросы Delphi 4 15.11.2006 23:45