如何画出像画图程序按shift健画45°斜线?(50分)

  • 主题发起人 主题发起人 lt66
  • 开始时间 开始时间
procedure TForm1.Button1Click(Sender: TObject);
begin
Canvas.MoveTo(1, 1);
Canvas.LineTo(100, 100);
end;
 
royal1442:
哈哈,你可能没有理解我的意思?按shift健画45°斜线
 
大家 帮帮忙吗?
没有人做过?
 
要是在keyPress事件里,加上上面的代码呢
 
大家都没有理解,可以在画图中 按shift健画线试试
 
现在应该理解了,三种可能嘛
左45,右45,垂直
那你就再加个判断吧,判断鼠标拖动的角度
 
早说嘛:

var
X1, Y1 : integer;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//当鼠标按下去的时候,如果按下了 Shift 键,那么记录起始点
if (ssShift in Shift) then
Canvas.MoveTo(X, Y);
X1 := X;
Y1 := Y;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
D, DX, DY : integer;
begin
//当鼠标抬起的时候,如果按下了 Shift 键,那么画线
if (ssShift in Shift) then
begin
//求绝对距离
D := Abs(Min(X - X1, Y - Y1));

if X > X1 then
DX := D
else
DX := -1*D;

if Y > Y1 then
DY := D
else
DY := -1*D;

Canvas.LineTo(X1 + DX, Y1 + DY);
end;
end;

function TForm1.Min(A, B: integer): integer;
begin
//求最小值
if A < B then
result := A
else
result := B;
end;
 
royal1442 基本正确
 
后退
顶部