Canvas это основа графической подсистемы Delphi.
Хотелось бы обратить ваше внимание на то что начало координат находится в левой верхней точке, а не в левой нижней как многие привыкли.
При помощи Canvas построим прямую.
Для начала кинем на форму кнопку (Button) и четыре Edit'a, для ввода координат начальной и конечной точки прямой(x1,y1,x2,y2).
В var пропишем
x1,x2,y1,y2:integer;
Два раза кликаем на кнопку и в процедуре пишем
Эта команда устанавливает положение "кисти" в координаты заданные в Edit1 и Edit2 и передаваться в переменные X1 и Y1 соответственно. Команда strtoint переводит строковую переменную в целое число.
Затем пишем
Здесь мы указываем координаты конца линии. Они будут забираться из Edit3 и Edit4 и передаваться в переменные X2 и Y2 соответственно.
X1:=strtoint(edit1.Text);
Y1:=strtoint(edit2.Text);
canvas.LineTo(x2, y2);
Хотелось бы обратить ваше внимание на то что начало координат находится в левой верхней точке, а не в левой нижней как многие привыкли.
При помощи Canvas построим прямую.
Для начала кинем на форму кнопку (Button) и четыре Edit'a, для ввода координат начальной и конечной точки прямой(x1,y1,x2,y2).
В var пропишем
x1,x2,y1,y2:integer;
Два раза кликаем на кнопку и в процедуре пишем
X1:=strtoint(edit1.Text);
Y1:=strtoint(edit2.Text);
canvas.MoveTo(x1, y1);Эта команда устанавливает положение "кисти" в координаты заданные в Edit1 и Edit2 и передаваться в переменные X1 и Y1 соответственно. Команда strtoint переводит строковую переменную в целое число.
Затем пишем
X2:=strtoint(edit3.Text);
Y2:=strtoint(edit4.Text);
canvas.LineTo(x2, y2);Здесь мы указываем координаты конца линии. Они будут забираться из Edit3 и Edit4 и передаваться в переменные X2 и Y2 соответственно.
Y1:=strtoint(edit2.Text);
canvas.MoveTo(x1, y1);
X2:=strtoint(edit3.Text);
Y2:=strtoint(edit4.Text);
canvas.LineTo(x2, y2);
Теперь при нажатии на кнопку строится линия. Давайте ещё добавим кружки и текст с координатами на концах линии.
Эллипсы в delphi задаются командой Canvas.Ellipse(x1,y1,x2,y2) . Здесь четыре координаты потому что эллипс вписывается в квадрат. Поэтому x1,y1 это координаты левого верхнего угла, а x2,y2 правого нижнего .
Маленький пример для объяснения принципа построения эллипса
Итак, теперь добавим кружки по концам линии.
Для первой точки
canvas.Ellipse(x1-5, y1-5,x1+5, y1+5);
Здесь мы берём координаты точек (x1, y1), и задаём что левый верхний угол, воображаемого квадрата в который будет вписываться окружность, будет на 5 пикселей левее x1 и на 5 пикселей выше y1, а правый нижний на 5 пикселей правее x1 и на 5 пикселей ниже y1.
И для второй
canvas.Ellipse(x2-5, y2-5,x2+5, y2+5);
Текст пишется при помощи команды Canvas.Text(x, y, text). Как вы уже поняли х, у это координаты текста, а text это текст =) .
Пусть по Х текст будет совпадать с точкой начала или конца, а по У повыше пикселей на пять.
canvas.TextOut(X1,y1+5,inttostr(X1)+', '+inttostr(Y1));
canvas.TextOut(X2,y2+5,inttostr(X2)+', '+inttostr(Y2));
X1:=strtoint(edit1.Text);
Y1:=strtoint(edit2.Text);
X2:=strtoint(edit3.Text);
Y2:=strtoint(edit4.Text);
canvas.Pen.Width:=2;
form1.Refresh;
canvas.TextOut(X1,y1+5,inttostr(X1)+', '+inttostr(Y1));
canvas.TextOut(X2,y2+5,inttostr(X2)+', '+inttostr(Y2));
canvas.MoveTo(x1, y1);
canvas.Ellipse(x1-5, y1-5,x1+5, y1+5);
canvas.LineTo(x2, y2);
canvas.Ellipse(x2-5, y2-5,x2+5, y2+5);
Комментариев нет:
Отправить комментарий