Урок 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 точки и до текущих координат курсора.
Удачи!
Встретимся в следующем уроке!
Добавил(а): Raven_182 | Дата: 2013-08-09 | |
Рисуется! Но линия прерывается, дело в том что это событие срабатывает не сразу а через определённый промежуток времени (16 - 47 мс зависит от параметров компьютера), что бы не было этого модифицируем код:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
PaintBox1.Canvas; //задаем черный цвет пиксела в координатах курсора (X, Y);
end;
По моему тут что-то пропущено.
|
Добавил(а): Admin | Дата: 2013-08-11 | |
Готово
|
Добавил(а): ДимаДК | Дата: 2013-08-11 | |
Вот у меня тоже тут возникла проблема, написал комментарий, но он чего-то не получился . Спасибо за решение проблемы!
|
No results found.