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;