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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 17:02   #1
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
Восклицание Проблема с рисованием на канве в TPaintBox

я начинающий в программирование, хоть и начал увлекаться этим давно. Вот теперь решил освоить графику в delphi, начал с canvas
Я написал простенькую программу, которая рисует в paintBox по нажатию на нём.

у меня есть переменная vniz: boolean; она принимает значение true когда левая кнопка мыши нажата на paintbox'е b и значение false когда кнопка опущена. При движение мыши по paintbox'у проверяется, значение переменной vniz и если оно равно true то по место расположению курсора ставиться пиксель
это выглядит вот так:
Код:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
vniz:= true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
vniz:= false;
end;

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
vniz:= false;
end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if vniz=true then paintbox1.Canvas.Pixels[x,y]:= 0;
end;
проблема в том, что если двигать мышью медленно то кривая получается нормальной, а если быстро то периодической (вернее на пройденом пути мыши остаётся куча точек)
вопрос: подскажите как этого избежать? компьютер у меня нормальный и дело не в нём (по крайней мере, в фотошопе у меня всё в порядке).
сразу говорю, что не надо говорить мне, что можно использовать LineTo мне нужна кривая а не прямая линия.
заранее спасибо
pro100-delphi вне форума Ответить с цитированием
Старый 09.03.2010, 17:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Замени
Цитата:
paintbox1.Canvas.Pixels[x,y]:= 0;
на
paintbox1.Canvas.LineTo(x,y)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2010, 17:13   #3
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Попробуйте использовать таймер и getcursorpos если я найду сейчас исходник свой, то выложу, помню долго маялся с этой прогой. Давно это было...
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 09.03.2010, 17:14   #4
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Замени

на
paintbox1.Canvas.LineTo(x,y)
я же говорил мне нужна кривая линия
pro100-delphi вне форума Ответить с цитированием
Старый 09.03.2010, 17:16   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

lineto и только его.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 09.03.2010, 17:19   #6
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

Ладно перефразирую
При смещение курсора хотя бы на один пиксель, этот пискель должен закраситься - в результате этого выйдет КРИВАЯ ЛИНИЯ
а вы мне суёте свой LineTO блин
вопрос состоит в тот как сделать так, что бы эта кривая не была разрывистой
pro100-delphi вне форума Ответить с цитированием
Старый 09.03.2010, 17:24   #7
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Что плохого в lineto? Я же написал. Вычислите координаты курсора getcursorpos и двигайте эту вашу прямою Lineto от коордиты к координате в цикле или в таймере, у вас не получится прямая линия, вам всё правильно советуют.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 09.03.2010, 17:32   #8
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

ДА КРИВАЯ МНЕ НУЖНА!!!
О господи за что мне это!?
pro100-delphi вне форума Ответить с цитированием
Старый 09.03.2010, 17:36   #9
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Вот посмотрите пожалуйста пример. Уже забыл как делал, три года назад изучал графику, набросал быстренько. Того исходника не нашёл. Может это то что надо.
Такс... Немного доработал, думаю, что сейчас будет то, что вам нужно... файл перезалил.
Смотрите, если то, что нужно - отпишитесь об удачном результате, если нет - будем дальше думать.
Я вот сейчас даже гравическим планшетом рисовал в своей проге Все работает отлично! Прилагаю скрин шот.
Изображения
Тип файла: jpg Привет форум.jpg (63.2 Кб, 157 просмотров)
Вложения
Тип файла: zip Немного графики.zip (206.0 Кб, 19 просмотров)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 09.03.2010 в 17:52.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 09.03.2010, 18:23   #10
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

спасибо большое
прекрасно! моя проблема решена с меня репутация
pro100-delphi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с рисованием сферы kady Помощь студентам 14 25.01.2010 17:48
TPaintBox, как делать надписи (label) и перетаскивать изображения? Zerone Мультимедиа в Delphi 1 19.04.2009 13:26
Непонятки с рисованием на форме ROD Общие вопросы C/C++ 2 03.02.2009 18:14
TPaintBox; Сменить цвет... JetAPI Компоненты Delphi 12 28.10.2007 11:24
Проблема с рисованием прямоугольника Юра. Общие вопросы Delphi 13 04.08.2007 06:08