画直线(在PAINTBOX中)时,如何使其在一定的范围里?(100分)

  • 主题发起人 主题发起人 wufengscl
  • 开始时间 开始时间
W

wufengscl

Unregistered / Unconfirmed
GUEST, unregistred user!
还想问一下:
如何画平行线和垂线??
 
1,指定ClipRect或用裁剪算法。
2,平行线要自已做算法,不过我有一个技巧:先用三倍线宽和前景色画直线(或折线),
再用单倍线宽背景色再画一次,就是平行线(不透明)
3,垂线自己去算吧。我有算法:
//获得过XX,YY点的,与X1,Y1,X2,Y2确定的直线垂直的垂足VX,VY:
procedure GetVerticalFoot(var VX,VY : double;XX,YY,X1,Y1,X2,Y2 : double);
var
BB,KK : double;
begin
if Abs(X2 - X1) < 10e-20 then begin
VX := X2;
VY := YY;
end
else begin
KK := (Y2 - Y1)/(X2 - X1);
if Abs(KK) < 10e-20 then begin
VX := XX;
VY := Y1;
end
else begin
BB := YY + XX/KK;
VX := ((BB - Y1)*(X2 - X1) * KK +X1 * (Y2 - Y1) * KK)/((Y2 - Y1)* KK + (X2 - X1));
VY := BB - VX/KK;
end;
end;
end;
 
接受答案了.
 
后退
顶部