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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? unitglobal.pas

?? 通過使用PaintBox控件進行矢量圖繪圖
?? PAS
字號:
unit UnitGlobal;

interface
uses
   Classes,Windows,Messages,ExtCtrls,Graphics,SysUtils,
   Controls,Dialogs,Menus,StdCtrls,Math,ZLib;
type
  TOperateAction  =(paNone,paSelect,paMove,paDrag,paResize,paDrawLine,paDrawGraph,
                     paDrawNotice,paModiGraph);           //操作的方法
  TPointList  = array of TPoint;
procedure XOR_Bitmap(var ABitmap : TBitmap);
function  CreateControl(ControlClass :TControlClass;Name :string;
             AOwner :TComponent = nil) :TControl;
procedure DrawPolyLine(DC :HDC;PointList :array of TPoint);
procedure DrawRect(DC :HDC;PointList :TPointList;IsFill :Boolean = False;
                    FillColor :TColor= clBlack);
procedure FillPoly(DC :HDC;PointList :TPointList;FillColor :TColor);
procedure DrawArc(DC :HDC;PointList :array of TPoint);
function  GetFillRgn(DC :HDC;Po :TPoint) :HRGN;
procedure FillArc(DC :HDC;PointList :TPointList;FillColor :TColor);
function PTInLine(PointArray:TPointList;Dot:TPoint;var Contrast:Double;var PointIndex:Integer):Boolean;
function PTInRect(Po :TPoint;ARect :TRect) :Boolean;

//以下三個函數(shù)為一位網(wǎng)友所提供,也是在網(wǎng)上找的,謝謝這位網(wǎng)友哦:)
function DotDis(x1,x2,y1,y2:Integer):Double;overload;
function DotDis(Dot1,Dot2:TPoint):Double; overload;
function Dot2Line(pFrom, pTo, pDot: Tpoint):Double;


implementation


////////////////////////////////////////////////////////////////////
//計算兩點間的距離。
//參數(shù):x1,x2,y1,y2:Integer,需要計算的兩個點的X和Y坐標(biāo)。
//返回值是兩個點的距離。
////////////////////////////////////////////////////////////////////

function DotDis(x1,x2,y1,y2:Integer):Double;overload;
var X,y:Double;
//需要先將整形數(shù)據(jù)轉(zhuǎn)換成雙精度浮點型才不容易溢出。
begin
  x:=(x1-x2)/5000000;
  y:=(y1-y2)/5000000;
  Result:=(SQRT(SQR(x)+SQR(y)))*5000000;
end;

////////////////////////////////////////////////////////////////////
//計算兩點間的距離。
//參數(shù):Dot1,Dot2:TPoint,需要計算的兩個點。
//返回值是兩個點的距離。
////////////////////////////////////////////////////////////////////
function DotDis(Dot1,Dot2:TPoint):Double; overload;
begin
  Result:=DotDis(Dot1.x,Dot2.x,Dot1.y,Dot2.y);
end;

////////////////////////////////////////////////////////////////////
//點到線段的距離。如果點與直線的垂足不在線段上,則取點到線段最近點的距離。
//參數(shù):pFrom, pTo:TPoint,線段的端點。
//      pDot,第三點。
//返回值是第三點與線段的距離。
////////////////////////////////////////////////////////////////////
function Dot2Line(pFrom, pTo, pDot: Tpoint):Double;
var
  F2T_Dis,D2T_Dis,D2F_Dis,s:Double;
begin
  F2T_Dis:=DotDis(pFrom,pTo);
  D2T_Dis:=DotDis(pDot,pTo);
  D2F_Dis:=DotDis(pDot,pFrom);
  if (D2F_Dis>SQRT(SQR(D2T_Dis)+SQR(F2T_Dis))) then
    Result:=D2T_Dis
  else if (D2T_Dis>SQRT(SQR(D2F_Dis)+SQR(F2T_Dis))) then
    Result:=D2F_Dis
  else if (Trunc(D2F_Dis)=Trunc(SQRT(SQR(D2T_Dis)+SQR(F2T_Dis)))) then
    Result:=D2T_Dis
  else if (Trunc(D2T_Dis)=Trunc(SQRT(SQR(D2F_Dis)+SQR(F2T_Dis)))) then
    Result:=D2F_Dis
  else if F2T_Dis<0.0001 then
  begin
    if D2T_Dis>D2F_Dis then
      Result:=D2F_Dis
    else
      Result:=D2T_Dis;
  end else
  begin
    s:=(D2F_Dis+D2T_Dis+F2T_Dis)/2;
    Result:=SQRT(ABS(s*(s-D2F_Dis)*(s-D2T_Dis)*(s-F2T_Dis)))*2/F2T_Dis;
  end;
end;

////////////////////////////////////////////////////////////////////
//判斷點是否在一個條線上或一定距離內(nèi)。
//參數(shù):PointArray:Array of TPoint組成區(qū)域的點列表。
//      Dot,第三點。
//      Var Contrast:Double指定的距離,如果點與線的距離小于這個值,則用這個值來返回最近的距離。
//      Var PointIndex:Integer返回與該點最近的線上的點的序號。
//返回第三點是否在線上或距線一定距離。
////////////////////////////////////////////////////////////////////
function PTInLine(PointArray:TPointList;Dot:TPoint;var Contrast:Double;var PointIndex:Integer):Boolean;
const
   Minimal = 5;
var
  MaxX,MaxY,MinX,MinY,i,Count:Integer;
  dDot2LineValue:Double;
  Dis1,Dis2:Double;
begin
  Result:=False;
  Count:=High(PointArray)+1;
  PointIndex:=-1;
  if Count<=1 then
    Exit;
  MaxX:=0;
  MaxY:=0;
  MinX:=MaxInt;
  MinY:=MaxInt;
  For i:=0 to Count-1 do
  begin
    if MaxX<PointArray[i].x then
      MaxX:=PointArray[i].x;
    if MaxY<PointArray[i].y then
      MaxY:=PointArray[i].y;
    if MinX>PointArray[i].x then
      MinX:=PointArray[i].x;
    if MinY>PointArray[i].y then
      MinY:=PointArray[i].y;
  end;
  if (Dot.x>MaxX+Contrast)
    or (Dot.x<MinX-Contrast)
    or (Dot.Y>MaxY+Contrast)
    or (Dot.Y<MinY-Contrast)
  then
    Exit;
  For i:=0 to Count-2 do
  begin
    dDot2LineValue:=Dot2Line(PointArray[i],PointArray[i+1],Dot);
    if dDot2LineValue<=Contrast then
    begin
      Result:=True;
      Contrast:=dDot2LineValue;
      Dis1:=DotDis(PointArray[i],Dot);
      Dis2:=DotDis(PointArray[i+1],Dot);
      if (Dis1<Dis2) and (Dis1<=Minimal) then
        PointIndex:=i
      else if (Dis2<Dis1) and (Dis2<=Minimal) then
        PointIndex:=i+1;
    end;
  end;
end;


//檢測點是否在矩形框內(nèi)

function PTInRect(Po :TPoint;ARect :TRect) :Boolean;
begin
  Result := False;
  if (Po.X > ARect.Left ) and (Po.X < ARect.Right) and (Po.Y > ARect.Top) and
     (Po.Y < ARect.Bottom) then
      Result := True;
end;

// 填充矩形
procedure FillRect(DC :HDC;PointList :TPointList;FillColor :TColor);
var
  P :TPointList;
begin
  SetLength(P,4);
  P[0] := PointList[0];
  P[2] := PointList[High(PointList)];
  P[1] := Point(P[2].X ,P[0].Y);
  P[3] := Point(P[0].X ,P[2].Y);
  FillPoly(DC,P,FillColor);
end;
//畫圓形

procedure DrawArc(DC :HDC;PointList :array of TPoint);
begin
  Arc(DC,PointList[0].X,PointList[0].Y,PointList[High(PointList) ].X,
     PointList[High(PointList)].Y,0,0,0,0);
end;

//填充圓形
procedure FillArc(DC :HDC;PointList :TPointList;FillColor :TColor);
var
  Rgn :HRGN;
begin
  Rgn := CreateEllipticRgn(PointList[0].X ,PointList[0].Y ,PointList[High(PointList)].X,
                           PointList[High(PointList)].Y);
  FillRgn(DC,Rgn,CreateSolidBrush(FillColor));
  DeleteObject(Rgn);
end;

//填充點四周的封閉區(qū)域

procedure FillPoly(DC :HDC;PointList :TPointList;FillColor :TColor);
var
  Rgn :HRGN;
begin
  Rgn := CreatePolygonRgn(PointList[0],High(PointList) + 1,ALternate);
  FillRgn(DC,Rgn,CreateSolidBrush(FillColor));
  DeleteObject(Rgn);
end;

//
function GetFillRgn(DC :HDC;Po :TPoint) :HRGN;
var
  Rgn :HRGN;
  BKColor :TColor;
  TempAry :array[0..1000,0..1000] of Boolean;
  procedure FillRgn(Po :TPoint);
  var
    TempRgn :HRGN;
  begin
    TempRgn := CreateRectRgn(Po.X,Po.Y,Po.X + 1,Po.Y + 1);
    CombineRgn(Rgn,Rgn,TempRgn,RGN_OR);
    DeleteObject(TempRgn);
    if (GetPixel(DC,Po.X ,Po.Y) <> BKColor) or TempAry[Po.X,Po.Y ] then Exit;
    TempAry[Po.X,Po.Y ] := True;

    FillRgn(Point(Po.X + 1,Po.Y));
    FillRgn(Point(Po.X - 1,Po.Y));
    FillRgn(Point(Po.X ,Po.Y + 1));
    FillRgn(Point(Po.X ,Po.Y - 1));
  end;
begin
  BKColor := GetPixel(DC,Po.X ,Po.Y);
  Rgn := CreateRectRgn(Po.X,Po.Y,Po.X + 1,Po.Y + 1);
  FillRgn(PO);
  Result := Rgn;
end;

//根據(jù)點畫線,但不封閉

procedure DrawPolyLine(DC :HDC;PointList :array of TPoint);
var
  i :integer;
  Po :TPoint;
begin
  MoveToEx(DC,PointList[0].X,PointList[0].Y,@Po);
  for i := 1 to High(PointList)  do
  begin
    LineTo(DC,PointList[i].X,PointList[i].Y);
  end;
end;

//畫矩形框,
procedure DrawRect(DC :HDC;PointList :TPointList;IsFill :Boolean = False;
           FillColor :TColor= clBlack);
var
  i :integer;
  Po :TPoint;
begin
  i := High(PointList);
  MoveToEx(DC,PointList[0].X,PointList[0].Y,@Po);
  LineTo(DC,PointList[0].X,PointList[i].Y);
  LineTo(DC,PointList[i].X,PointList[i].Y);
  LineTo(DC,PointList[i].X,PointList[0].Y);
  LineTo(DC,PointList[0].X,PointList[0].Y);
  if IsFill then
  begin
    FillRect(DC,PointList,FillColor);
  end;
end;
//根據(jù)類名創(chuàng)建類的實例

function CreateControl(ControlClass :TControlClass;Name :string;
            AOwner :TComponent = nil) :TControl;
begin
  Result := ControlClass.Create(AOwner);
  Result.Name  := Name;
end;

  //對圖片取反,暫時未用
procedure XOR_Bitmap(var ABitmap : TBitmap);
var
  i,j :integer;
begin
  for i := 0 to ABitmap.Width do
    for j := 0 to ABitmap.Height do
      ABitmap.Canvas.Pixels[i,j] := ABitmap.Canvas.Pixels[i,j] XOR $FFFF;
end;


end.
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美色| 另类中文字幕网| 亚洲成国产人片在线观看| 视频在线观看国产精品| 秋霞午夜av一区二区三区| 久久99国内精品| 成人综合婷婷国产精品久久免费| 成人精品免费网站| 欧美三区免费完整视频在线观看| 欧美白人最猛性xxxxx69交| 久久久99精品久久| 一区二区三区欧美| 九九热在线视频观看这里只有精品| 盗摄精品av一区二区三区| 欧美三级电影在线看| 久久免费偷拍视频| 亚洲影视在线观看| 国产麻豆精品在线| 国产午夜精品美女毛片视频| 国产精品美女久久久久aⅴ| 国产欧美精品一区二区三区四区| 亚洲一区二区三区四区中文字幕| 男女性色大片免费观看一区二区| 国产麻豆日韩欧美久久| 色美美综合视频| 欧美日本在线播放| 日本一区二区三区国色天香| 亚洲一本大道在线| 国产+成+人+亚洲欧洲自线| 欧美日韩国产综合草草| 久久亚洲影视婷婷| 一区二区三区不卡在线观看 | 国产在线精品免费| 色一区在线观看| 亚洲小少妇裸体bbw| 亚洲综合色网站| 国产二区国产一区在线观看| 欧美精品久久天天躁| 中文字幕一区二区三区在线播放 | 欧美三区免费完整视频在线观看| 欧美日韩精品欧美日韩精品| 欧美成人一区二区三区在线观看| 精品久久久久久久久久久久包黑料| 久久久久久麻豆| 日本亚洲欧美天堂免费| 国产成人av一区二区三区在线观看| 91精品免费在线| 亚洲国产婷婷综合在线精品| 成人网在线免费视频| 26uuu亚洲综合色| 免费成人在线网站| 欧美日韩免费电影| 亚洲一区二区三区四区不卡| 北岛玲一区二区三区四区| 久久久精品国产免大香伊 | 色狠狠桃花综合| 中文字幕在线一区二区三区| 国产精品中文欧美| 精品国产乱码久久久久久夜甘婷婷| 亚洲gay无套男同| 91福利视频久久久久| 亚洲少妇中出一区| 91美女在线观看| 综合色中文字幕| 99九九99九九九视频精品| 国产三级三级三级精品8ⅰ区| 久久精品国产亚洲5555| 欧美一区三区二区| 青青草原综合久久大伊人精品优势| 欧美日韩在线电影| 亚洲成人免费观看| 美女视频网站黄色亚洲| 久久精品视频免费| 欧美最新大片在线看| 99精品国产一区二区三区不卡| 中文字幕亚洲一区二区av在线| 91极品美女在线| 亚洲国产成人av网| 精品福利视频一区二区三区| 丁香一区二区三区| 亚洲bt欧美bt精品| 日韩欧美电影一区| 欧美做爰猛烈大尺度电影无法无天| 欧美国产精品中文字幕| 精品写真视频在线观看| 久久久久亚洲蜜桃| 成人激情黄色小说| 亚洲视频1区2区| 色www精品视频在线观看| 亚洲一区二区五区| 欧美日韩高清在线播放| 青青青伊人色综合久久| 久久综合久久99| 国产成都精品91一区二区三| 中文字幕一区二区三区在线播放| 91高清视频在线| 日韩精品一二三四| 精品国产三级电影在线观看| 粉嫩aⅴ一区二区三区四区 | 久久精品国产秦先生| 精品日韩一区二区三区| 国产成人亚洲精品狼色在线 | 欧美视频一二三区| 日韩精品三区四区| 久久综合狠狠综合久久激情| 大胆亚洲人体视频| 一区二区三区在线播放| 日韩午夜在线播放| 成人午夜av在线| 午夜成人免费视频| 久久精品一二三| 色狠狠一区二区| 久久精品国产澳门| 国产精品灌醉下药二区| 欧美高清视频一二三区| 国产精品69毛片高清亚洲| 亚洲精品免费看| 精品国产乱码久久久久久久久| 不卡视频在线看| 日韩黄色片在线观看| 欧美激情资源网| 欧美美女激情18p| 国产高清视频一区| 亚洲国产另类av| 久久久国产精华| 欧美日韩一级视频| 粉嫩aⅴ一区二区三区四区| 亚洲va中文字幕| 国产精品乱码一区二区三区软件| 欧美日韩高清一区二区| 成人精品国产一区二区4080| 午夜影院久久久| 国产精品视频在线看| 日韩一区二区精品| 色婷婷亚洲综合| 国产色产综合产在线视频| 视频一区在线播放| 国产又黄又大久久| a级精品国产片在线观看| 欧美视频在线播放| 欧美电影免费观看高清完整版在线观看 | 日韩高清不卡在线| 日本一区二区三区高清不卡| 欧美老肥妇做.爰bbww| 国产福利一区二区| 天天操天天干天天综合网| 国产精品免费av| 日韩精品一区在线| 欧美日韩亚洲丝袜制服| 成人丝袜高跟foot| 国模无码大尺度一区二区三区| 一区二区理论电影在线观看| 国产欧美精品区一区二区三区 | 老色鬼精品视频在线观看播放| 综合婷婷亚洲小说| 久久精品一区蜜桃臀影院| 日韩无一区二区| 欧美午夜在线观看| av欧美精品.com| 丁香婷婷深情五月亚洲| 精品一区二区影视| 天天综合天天综合色| 一个色综合网站| 亚洲欧美电影院| 国产精品三级av| 国产午夜精品一区二区| 精品少妇一区二区三区视频免付费| 欧美日韩亚洲综合| 在线观看日韩高清av| 91在线免费视频观看| 波多野结衣中文字幕一区| 国产成人免费在线观看不卡| 国产毛片一区二区| 激情五月婷婷综合| 国内精品国产成人| 国产一区二区视频在线播放| 美女网站一区二区| 久久精品国产精品亚洲红杏| 麻豆91在线播放| 免费高清不卡av| 久久精品国产精品亚洲综合| 麻豆一区二区三| 韩国午夜理伦三级不卡影院| 精品一区二区av| 国产一区二区视频在线播放| 国产毛片精品一区| 国产99久久久国产精品潘金| 国产91精品欧美| 99久久伊人久久99| 91麻豆国产在线观看| 91黄色激情网站| 欧美精品免费视频| 精品少妇一区二区三区日产乱码| 日韩欧美一区在线| 久久亚洲精品小早川怜子| 国产精品视频看| 亚洲美女免费视频| 午夜在线电影亚洲一区| 欧美aaa在线| 国产在线视频一区二区|