Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 4
Всего онлайн: 4
Зарегистрировано юзеров: 7198
Комментариев на сайте: 658
Новый юзер: Michaelvom



Последние комментарии
c
YonqDox прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[url=https://clck.ru/DwfTp]Hacker Forum "Творческая Лаборатория DedicateT"[/url]
YonqDox прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[url=https://clck.ru/DwfTp]Лучший Хакерский сайт "Творческая Лаборатория DedicateT"[/url]

Урок 24 - Изучаем компонент PaintBox

  В этом уроке изучим компонент под PaintBox на вкладке System.

   У этого компонента есть один недостаток проявляющий себя только на Windows XP: работающую программу перекрасть окном другой программы то все содержимое компонента стирается.

   Вытащим компонент на форму и попытаемся нарисовать, для этого сделаем обработчик события OnMouseMove и напишем следующий код:

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  PaintBox1.Canvas.Pixels[x,y]:= clBlack; //задаем черный цвет пиксела в координатах курсора (X, Y); 
end;


Результат


   Рисуется! Но линия прерывается, дело в том что это событие срабатывает не сразу а через определённый промежуток времени (16 - 47 мс зависит от параметров компьютера), что бы не было этого модифицируем код:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  PaintBox1.Canvas.LineTo(X,Y); //задаем черный цвет пиксела в координатах курсора (X, Y); 
end;


Результат


   Так-то лучше. Теперь нарисуем прямые линии, что бы не мешать уберём прошлый код и создадим новый обработчик события OnMouseDown:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PaintBox1.Canvas.Pen.Width:= 4; //Задаем размер карандаша
  PaintBox1.Canvas.Pen.Color:= clGreen; //Цвет
  
  if button = mbLeft then
  PaintBox1.Canvas.MoveTo(X,Y);	// если нажата левая кнопка то перевидаем 1 точку в ее координаты
  if button = mbRight then
  PaintBox1.Canvas.LineTo(X,Y);	// если нажата правая кнопка то перевидаем 2 точку в ее координаты и чертим линию
end;


Результат


   При нажатии на левую кнопку программа запомнит точку начала линии, а при нажатии на правую нарисует линию от 1 точки и до текущих координат курсора.

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 13 Апреля 2013
Просмотров: 23313

Урок 23 - Функции для работы с мышью Урок 25 - Подробное изучение RichEdit'a

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



аватар Добавил(а): Raven_182 [Новичок] Дата: 2013-08-09
Рисуется! Но линия прерывается, дело в том что это событие срабатывает не сразу а через определённый промежуток времени (16 - 47 мс зависит от параметров компьютера), что бы не было этого модифицируем код: procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin PaintBox1.Canvas; //задаем черный цвет пиксела в координатах курсора (X, Y); end; По моему тут что-то пропущено.




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-08-11
Готово




аватар Добавил: ДимаДК [Новичок] Дата: 2013-08-11
Вот у меня тоже тут возникла проблема, написал комментарий, но он чего-то не получился . Спасибо за решение проблемы!




аватар Добавил(а): Davidpab [Новичок] Дата: 2019-08-15
&#1047;&#1072;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; seo &#1087;&#1086;&#1080;&#1089;&#1082;&#1086;&#1074;&#1091;&#1102; &#1086;&#1087;&#1090;&#1080;&#1084;&#1080;&#1079;&#1072;&#1094;&#1080;&#1102; &#1089;&#1072;&#1081;&#1090;&#1072;, <a href=http://seoprofisional.ru/bazy>базы для xrumer</a> &#1047;&#1072;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; &#1091;&#1089;&#1083;&#1091;&#1075;&#1080; &#1087;&#1086; &#1087;&#1088;&#1086;&#1076;&#1074;&#1080;&#1078;&#1077;&#1085;&#1080;&#1102; &#1089;&#1072;&#1081;&#1090;&#1072; &#1055;&#1086; &#1074;&#1089;&#1077;&#1084; &#1074;&#1086;&#1079;&#1085;&#1080;&#1082;&#1096;&#1080;&#1084; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1072;&#1084; &#1042;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1086;&#1073;&#1088;&#1072;&#1090;&#1080;&#1090;&#1100;&#1089;&#1103; &#1074; &#1089;&#1082;&#1072;&#1081;&#1087; &#1083;&#1086;&#1075;&#1080;&#1085; [b]pokras7777[/b] &#1056;&#1072;&#1089;&#1082;&#1088;&#1091;&#1090;&#1082;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072; &#1087;&#1086;&#1076; &#1082;&#1083;&#1102;&#1095; fhdxxxxxd