亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? anyline.pas

?? 圖論算法
?? PAS
字號:
unit anyline;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  Tlinepoint = record
    X,Y:SmallInt;
  end;

  Tanyline = class(TGraphicControl)
  private
        FlineWidth : integer;
        procedure Setlinewidth(value:integer);
  protected
	procedure Paint; override;
        //NCHitTest on used on Twincontrol
        //procedure NCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
        //        procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;
  public
        linepoints:array[1..8] of Tlinepoint;
        linepointnum :integer;
	constructor Create(AOwner: TComponent);override;
        procedure drawby(const thepointarray:array of Tpoint);
        function getmidpoint:Tpoint;
  published
        property Align;
        property color;
//	property DragCursor;
//	property DragMode;
//	property Enabled;
        property linewidth :integer read Flinewidth write Setlinewidth;
//	property ParentColor;
//	property ParentShowHint;
//	property ShowHint;
	property Visible;
//	property OnDragDrop;
//	property OnDragOver;
//	property OnEndDrag;
//	property OnMouseDown;
//	property OnMouseMove;
//	property OnMouseUp;
//	property OnStartDrag;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Graph', [Tanyline]);
end;

constructor Tanyline.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle - [csOpaque];
  Width := 10;
  Height := 10;
  Flinewidth := 1;
  color := clBlack;
  enabled := False;
  //Sendtoback;
end;

{// NCHitTest on used on Twincontrol
procedure Tanyline.NCHitTest(var Msg: TWMNCHitTest);
begin
   inherited;
   Msg.Result := HTTRANSPARENT;
end;
}
procedure Tanyline.Paint;
var i,j:integer;
    linelength:integer; // approxiate line length , sqr((x1-x2)^2+(y1-y2)^2)+ sqr((x2-x3)^2+(y2-y3)^2)+...
    INVALUENUM :integer;
    XX,YY:integer;
    t,tt,ttt,f1,f2,f3,f4:real;
    function getlength(n:integer):real; //(n,n+1) point distance
      var XX,YY:integer;
          k:integer;
      begin
        XX := (linepoints[n].X - linepoints[n+1].X);
        XX := XX * XX;
        YY := (linepoints[n].Y - linepoints[n+1].Y);
        YY := YY * YY;
        result := sqrt(XX + YY);
      end;
begin
  with canvas do
    begin
      pen.color := color;
      pen.width := Flinewidth;
      pen.style := psSolid;
      if linepointnum = 2 then
         begin
           MoveTo(linepoints[1].X,linepoints[1].Y);
           LineTo(linepoints[2].X,linepoints[2].Y);
         end
      else if linepointnum = 3 then
         begin
           INVALUENUM := Round(getlength(1));
           MoveTo(linepoints[1].X,linepoints[1].Y);
           for i := 0 to INVALUENUM do
             begin
    	       t  := i*0.5/(INVALUENUM+1);
               tt := t*t ;
	       f1 := 2*tt - 3*t +1;
    	       f2 := 4*t - 4*tt;
	       f3 := 2*tt - t;
 	       xx := round(f1* linepoints[1].X + f2* linepoints[2].X + f3* linepoints[3].X );
	       yy := round(f1* linepoints[1].Y + f2* linepoints[2].Y + f3* linepoints[3].Y );
	       lineto(xx,yy);
             end;

           INVALUENUM := Round(getlength(2));
           for i := 0 to INVALUENUM do
	     begin
	       t  := 0.5 + i*0.5/(INVALUENUM+1);
  	       tt := t*t ;
	       f1 := 2*tt - 3*t +1;
	       f2 := 4*t - 4*tt;
	       f3 := 2*tt - t;
	       xx := round(f1* linepoints[1].X + f2* linepoints[2].X + f3* linepoints[3].X );
	       yy := round(f1* linepoints[1].Y + f2* linepoints[2].Y + f3* linepoints[3].Y );
	       lineto(xx,yy);
             end;
         end
      else  if linepointnum > 3 then
         begin
           INVALUENUM := Round(getlength(1));
           MoveTo(linepoints[1].X,linepoints[1].Y);
           for i := 0 to INVALUENUM do
             begin
    	       t  := i*0.5/(INVALUENUM+1);
               tt := t*t ;
	       f1 := 2*tt - 3*t +1;
    	       f2 := 4*t - 4*tt;
	       f3 := 2*tt - t;
 	       xx := round(f1* linepoints[1].X + f2* linepoints[2].X + f3* linepoints[3].X );
	       yy := round(f1* linepoints[1].Y + f2* linepoints[2].Y + f3* linepoints[3].Y );
	       lineto(xx,yy);
             end;

           for j := 1 to linepointnum - 3 do
             begin
               INVALUENUM := Round(getlength(j+1));
               for i := 0 to INVALUENUM do
                 begin
	           t   := i*0.5/(INVALUENUM+1);
	           tt  := t*t;
	           ttt := t*t*t;
	           f1  := 4*tt - t - 4*ttt;
	           f2  := 1 - 10*tt + 12*ttt;
	           f3  := t + 8*tt - 12*ttt;
	           f4  := 4*ttt - 2*tt;
	           xx := round(f1* linepoints[j].X + f2* linepoints[j+1].X + f3* linepoints[j+2].X + f4* linepoints[j+3].X);
	           yy := round(f1* linepoints[j].Y + f2* linepoints[j+1].Y + f3* linepoints[j+2].Y + f4* linepoints[j+3].Y);
   	           lineto(xx,yy);
                 end;
             end;
           INVALUENUM := Round(getlength(linepointnum-1));
           for i := 0 to INVALUENUM do
	     begin
	       t  := 0.5 + i*0.5/(INVALUENUM+1);
  	       tt := t*t ;
	       f1 := 2*tt - 3*t +1;
	       f2 := 4*t - 4*tt;
	       f3 := 2*tt - t;
	       xx := round(f1* linepoints[linepointnum-2].X + f2* linepoints[linepointnum-1].X + f3* linepoints[linepointnum].X );
	       yy := round(f1* linepoints[linepointnum-2].Y + f2* linepoints[linepointnum-1].Y + f3* linepoints[linepointnum].Y );
	       lineto(xx,yy);
             end;
         end;
    end;
end;

procedure Tanyline.drawby(const thepointarray:array of Tpoint);
var i:integer;
begin
  linepointnum := High(thepointarray)+1;
  for i := 1 to linepointnum do
    begin
      linepoints[i].X := thepointarray[i-1].X;
      linepoints[i].Y := thepointarray[i-1].Y;
    end;
  Invalidate;
//  Update;
end;

function Tanyline.getmidpoint:Tpoint;
var
    XX,YY:integer;
    t,tt,ttt,f1,f2,f3,f4:real;
begin
  if linepointnum = 2 then
     begin
       result.X := (linepoints[1].X + linepoints[2].X) div 2;
       result.Y := (linepoints[1].Y + linepoints[2].Y) div 2;
     end
  else if linepointnum > 2 then
     begin
       t  := 0.75;
       tt := t*t ;
       f1 := 2*tt - 3*t +1;
       f2 := 4*t - 4*tt;
       f3 := 2*tt - t;
       result.X := round(f1* linepoints[linepointnum-2].X + f2* linepoints[linepointnum-1].X + f3* linepoints[linepointnum].X );
       result.Y := round(f1* linepoints[linepointnum-2].Y + f2* linepoints[linepointnum-1].Y + f3* linepoints[linepointnum].Y );
     end;
end;

procedure Tanyline.Setlinewidth(value:integer);
begin
  if Flinewidth <> Value then
  begin
    Flinewidth := Value;
    Invalidate;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美va日韩va| 国产精品午夜免费| 懂色av一区二区夜夜嗨| 亚洲最新在线观看| 亚洲精品一区二区三区精华液| 91在线观看污| 激情综合色综合久久| 亚洲免费在线视频一区 二区| 欧美成人bangbros| 欧美亚洲另类激情小说| 国产精品18久久久久久久网站| 亚洲二区视频在线| 国产精品麻豆一区二区| 日韩丝袜情趣美女图片| 色婷婷久久久久swag精品| 国产精品亚洲午夜一区二区三区| 亚洲精品成人精品456| 国产亚洲欧美在线| 欧美大尺度电影在线| 色婷婷国产精品| 成人丝袜高跟foot| 精品亚洲porn| 奇米色一区二区| 午夜成人免费视频| 亚洲永久精品国产| 中文字幕一区二区三区不卡| 国产三级一区二区| 精品福利在线导航| 欧美一区二区不卡视频| 欧洲中文字幕精品| 色婷婷亚洲精品| 91蝌蚪国产九色| 粉嫩av一区二区三区| 国产精品1区二区.| 国产91清纯白嫩初高中在线观看 | 日韩av网站免费在线| 一区二区三区中文在线| 国产精品蜜臀在线观看| 国产亚洲自拍一区| 久久精品人人做| 亚洲精品一区二区三区精华液| 日韩久久免费av| 日韩免费电影网站| 精品成人a区在线观看| 日韩美女天天操| 精品国产91亚洲一区二区三区婷婷| 日韩欧美在线综合网| 日韩欧美一级精品久久| 日韩欧美你懂的| 欧美一区二区久久久| 日韩欧美在线网站| 日韩免费看的电影| 久久九九影视网| 国产农村妇女毛片精品久久麻豆| 国产日产欧美一区二区视频| 欧美高清在线视频| 日韩一区在线免费观看| 亚洲一区二区3| 日韩**一区毛片| 国内一区二区在线| av在线这里只有精品| 色妹子一区二区| 欧美男女性生活在线直播观看| 欧美一区二区三区成人| 久久亚洲精品小早川怜子| 中文字幕免费不卡在线| 亚洲色图清纯唯美| 亚洲高清三级视频| 久久99精品国产麻豆不卡| 国产大陆a不卡| 91在线云播放| 欧美精品第一页| 2023国产精品自拍| 136国产福利精品导航| 视频在线观看91| 国产一区二区免费在线| 91在线观看地址| 日韩手机在线导航| 中文字幕一区二区三区视频| 天天色 色综合| 国产成人免费av在线| 欧美亚洲日本一区| 久久女同精品一区二区| 亚洲色图欧洲色图| 久久99日本精品| 一本到一区二区三区| 日韩欧美中文字幕一区| 亚洲色图制服诱惑| 久久精品国产色蜜蜜麻豆| 99久久久久久| 日韩欧美国产综合一区| 中文字幕综合网| 久久99精品久久只有精品| 99re8在线精品视频免费播放| 这里只有精品99re| 亚洲人成精品久久久久久| 美女高潮久久久| 一本到不卡免费一区二区| 精品精品国产高清a毛片牛牛 | 三级在线观看一区二区| 国产.精品.日韩.另类.中文.在线.播放| 日本道免费精品一区二区三区| 欧美成人伊人久久综合网| 一区二区三区国产精品| 国产不卡视频在线播放| 欧美另类久久久品| 最新欧美精品一区二区三区| 精品亚洲国内自在自线福利| 欧美日韩中文另类| 亚洲欧美综合另类在线卡通| 国产一区二区主播在线| 7777精品伊人久久久大香线蕉经典版下载 | 7777精品伊人久久久大香线蕉超级流畅| 国产婷婷色一区二区三区在线| 日韩电影在线观看一区| 色婷婷久久一区二区三区麻豆| 日本一区二区视频在线观看| 免费观看91视频大全| 欧美亚男人的天堂| 中文字幕一区在线观看视频| 国产一区二区主播在线| 欧美一级片免费看| 亚洲h精品动漫在线观看| 91在线视频网址| 中文字幕av不卡| 国产精品99久久久久久有的能看 | eeuss鲁片一区二区三区在线看| 欧美videofree性高清杂交| 亚洲成人www| 91国偷自产一区二区使用方法| 国产精品毛片久久久久久| 国产精品1024| 久久人人97超碰com| 久久国产精品99久久久久久老狼| 欧美日韩国产大片| 亚洲国产精品久久人人爱蜜臀| 91久久精品一区二区二区| 亚洲精品自拍动漫在线| 99精品国产99久久久久久白柏| 国产精品欧美综合在线| 成人免费av资源| 国产精品理论片在线观看| 高清国产一区二区| 国产精品麻豆久久久| www.色精品| 亚洲欧美另类在线| 欧美少妇bbb| 三级欧美在线一区| 日韩精品中文字幕一区二区三区| 琪琪久久久久日韩精品| 精品国产免费一区二区三区四区| 精品一区二区免费在线观看| 精品处破学生在线二十三| 国产成人免费在线观看不卡| 国产精品色呦呦| 色婷婷综合视频在线观看| 亚洲v日本v欧美v久久精品| 制服丝袜国产精品| 国产一区二区三区最好精华液| 日本一区二区视频在线观看| 91免费精品国自产拍在线不卡| 怡红院av一区二区三区| 欧美日韩国产成人在线免费| 老司机免费视频一区二区三区| 久久―日本道色综合久久| 99久久精品国产麻豆演员表| 一区二区在线观看视频| 欧美日韩亚洲丝袜制服| 麻豆成人av在线| 国产精品你懂的| 欧美性视频一区二区三区| 麻豆极品一区二区三区| 日本一区二区视频在线观看| 91激情在线视频| 国产一区二区在线免费观看| 国产精品久久免费看| 欧美日韩国产一二三| 精品无人码麻豆乱码1区2区| 中文字幕日本乱码精品影院| 欧美一区中文字幕| 成人一区二区视频| 亚洲五码中文字幕| 国产日韩精品久久久| 欧美性做爰猛烈叫床潮| 国产精品一级片在线观看| 亚洲综合免费观看高清完整版| 日韩亚洲欧美中文三级| 97久久精品人人做人人爽50路| 日本亚洲电影天堂| 中文字幕中文字幕在线一区| 欧美一区国产二区| 97se狠狠狠综合亚洲狠狠| 美女网站视频久久| 一区二区理论电影在线观看| 久久色.com| 欧美日韩成人综合天天影院| 不卡的av电影| 久久99热99| 午夜精品久久久久久久| 国产精品久久久久精k8|