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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sgr_scale.pas

?? 圖形控件,畫(huà)實(shí)時(shí)曲線(xiàn),等操作方便
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
  begin
   if (fFlags and sdfVertical)=0 then
    for j:=0 to rTksCount-1 do fTksPos[j]:=fOPos+round(fLen*fTksDbl[j])
   else
    for j:=0 to rTksCount-1 do fTksPos[j]:=fOPos-round(fLen*fTksDbl[j])
  end;
begin               
 if fTicksCount<1 then begin rTksCount:=fTicksCount; Exit end;
 if (fFlags and (sdfNoTicksLabel or sdfNotAjustedTicks))=0 then LbldTicks
 else NoLbldTicks;
end;                
procedure Tsp_Scale.ShiftScaleBy(pixel:boolean; idelta:double; fdelta:double);
  procedure ShiftMinMax(delta:double);
  begin
   fMin:=fMin+delta;
   fMax:=fMin+fInterval;
   if (fFlags and sdfInversed)=0 then fOVal:=fMin else fOVal:=fMax;
   IMin:=Ceil(fMin*IntFactor);
   IMax:=Floor(fMax*IntFactor);
  end;
  procedure SLbldTicksVal(delta:double);                     
  var id:extended; j:integer;
  begin
    id:=Frac((fTksDbl[0]*IntFactor-fOVal*IntFactor)/IStep);
    if ((fFlags and sdfInversed)=0) then
    begin
      if id<0 then id:=id+1;
      id:=fOVal*IntFactor+id*IStep;
      rTksCount:=Trunc((fMax*IntFactor-id)/IStep)+1;
      if rTksCount>MaxTicksCount then rTksCount:=MaxTicksCount;
      for j:=0 to rTksCount do fTksDbl[j]:=(id+IStep*j)/IntFactor;
    end else begin
      if id>0 then id:=id-1;
      id:=fOVal*IntFactor+id*IStep;
      rTksCount:=Trunc((id-fMin*IntFactor)/IStep)+1;
      if rTksCount>MaxTicksCount then rTksCount:=MaxTicksCount;
      for j:=0 to rTksCount do fTksDbl[j]:=(id-IStep*j)/IntFactor;
    end
  end;
  procedure STicksVal(delta:double);                         
  var id,step:double; j:integer;
  begin
    if fTicksCount>1 then step:=1/(fTicksCount-1) else step:=1;
    if (fFlags and sdfVertical)<>0 then delta:=-delta;
    id:=Frac((fTksDbl[0]*fLen-delta)/(fLen*step));
    if id<0 then id:=id+1;
    rTksCount:=Trunc(1/step-id)+1;
    id:=id*step;
    if rTksCount>MaxTicksCount then rTksCount:=MaxTicksCount;
    for j:=0 to rTksCount-1 do fTksDbl[j]:=id+step*j;
  end;
begin               
 if pixel then fdelta:=idelta/fM else idelta:=fdelta*fM;
 if fdelta=0 then Exit;
 ShiftMinMax(fdelta);
 if abs(fdelta)>fInterval then  CalcTicksVal
 else begin
    if (fFlags and (sdfNoTicksLabel or sdfNotAjustedTicks))=0 then SLbldTicksVal(fdelta)
    else STicksVal(idelta);
 end;
 CalcTicksPos;
end;               
function Tsp_Scale.TickLabel(tickNum: integer): string;
begin
 if ((fFlags and sdfLabelAsDate)<>0) then
  Result:=FormatDateTime(fLabelFormat, TksDbl(tickNum))
 else
  Result:=FormatFloat(fLabelFormat, TksDbl(tickNum));
end;
function Tsp_Scale.GetTicksCount:byte;
begin
 Result:=rTksCount;
end;
procedure Tsp_Scale.SetFlagBit(const BN:integer; const On:boolean);
var Mask:integer;
begin
 Mask:=1 shl BN;
 if On then
 begin
  if ((fFlags and Mask)=0) then begin
    fFlags:=fFlags or Mask;
    FlagsChanged(BN, On);
  end;
 end else
 if ((fFlags and Mask)<>0) then begin
   fFlags:=fFlags and Not Mask;
   FlagsChanged(BN, On);
 end
end;
procedure Tsp_Scale.ReSetFlagBit(const BN:integer; const Off:boolean);
begin
 SetFlagBit(BN,Not(Off));
end;
function  Tsp_Scale.NotFlagBit(const BN:integer):boolean;
begin
 Result:=(fFlags and (1 shl BN))=0;
end;
function Tsp_Scale.GetFlagBit(const BN:integer):boolean;
begin
 Result:=(fFlags and (1 shl BN))<>0;
end;
procedure Tsp_Scale.FlagsChanged(const BN:integer; const On:boolean);
begin
end;
constructor Tsp_Scale.Create(Flags:integer);
begin
 inherited Create;
 fLineAttr:=Tsp_LineAttr.Create;
 fTicksCount:=5;
 fFlags:=Flags;
 fLabelFormat:='###0.##';
 fO.x:=10; fO.y:=30; fLen:=25;
 ChangeMinMax(dblDfltAxisMin, dblDfltAxisMax);
end;
destructor Tsp_Scale.Destroy;
begin
 if Assigned(fLineAttr) then fLineAttr.Free;
 inherited Destroy;
end;
procedure Tsp_Scale.SetLine(oX, oY, lLen:integer);
begin
 if (fO.x<>oX) or (fO.y<>oY) or (lLen<>fLen) then
 begin
  fO.x:=oX; fO.y:=oY;
  if lLen=0 then inc(lLen) else if lLen<0 then lLen:=-lLen;
  fLen:=lLen;
  CalcMetr;
  CalcTicksPos;
 end;
end;
procedure Tsp_Scale.ChangeMinMax(aMin,aMax:double);
begin
  FixMinMax(aMin, aMax);
  CalcMetr;
  CalcTicksVal;
  CalcTicksPos;
end;
procedure Tsp_Scale.ScrollBy(delta:integer);
begin
 ShiftScaleBy(True, delta, 0);
end;
function Tsp_Scale.V2P(const V:double):integer;                                     
var rr:double;
begin
 rr:=fOPos+(fM*(V-fOVal));
 if rr>16383 then Result:=16383
 else if rr<-16383 then Result:=-16383
      else Result:=round(rr);
end;
function Tsp_Scale.P2V(const V:integer):double;                                     
begin
 Result:=fOVal+(V-fOPos)/fM;
end;
Const
 TickOfs=0;                                    
 MnTick=1;                                    
 MjTick=4;                                     
 LblOfs=1;
function Tsp_Scale.BandWidth(FntWidth, FntHeight:integer):integer;
var j, tw:integer;
begin
 Result:=fLineAttr.Width;
 if (FFlags and sdfVertical)=0 then
 begin                                          
   if (rTksCount>0) then begin
     if ((FFlags and sdfNoTicksLabel)=0) then
       inc(Result, TickOfs+MjTick+LblOfs+FntHeight)
     else if (FFlags and sdfNoTicks)=0 then inc(Result, TickOfs+MjTick);
   end;              
 end else
 begin                                        
   Result:=fLineAttr.Width;
   if (rTksCount>0) then begin
     if ((FFlags and sdfNoTicksLabel)=0) then
     begin
      tw:=Length(TickLabel(0));
      for j:=1 to rTksCount-1 do                                     
         if tw < Length(TickLabel(j)) then
            tw:=Length(TickLabel(j));
      inc(Result, TickOfs+MjTick+LblOfs+tw*FntWidth);
     end
     else if (FFlags and sdfNoTicks)=0 then inc(Result, TickOfs+MjTick);
   end;              
 end;
end;            
function Tsp_Scale.OrgIndent(FntWidth, FntHeight:integer):integer;
var tp:integer;
begin
 if (rTksCount>0) and ((FFlags and sdfNoTicksLabel)=0) then
 begin
   tp:=abs(round((fOVal-TksDbl(0))*fM));                     
   if (FFlags and sdfVertical)=0 then
     Result:=FntWidth*Length(TickLabel(0)) div 2-tp
   else Result:=FntHeight div 2-tp;
   if Result<0 then Result:=0;
 end else Result:=0;
end;
function Tsp_Scale.EndIndent(FntWidth, FntHeight:integer):integer;
var tp:integer;
begin
 if (rTksCount>0) and ((FFlags and sdfNoTicksLabel)=0) then
 begin
   if (fFlags and sdfInversed)=0
   then tp:=abs(round((fMax-TksDbl(rTksCount-1))*fM))                      
   else tp:=abs(round((fMin-TksDbl(rTksCount-1))*fM));
   if (FFlags and sdfVertical)=0 then
     Result:=FntWidth*Length(TickLabel(rTksCount-1)) div 2 - tp
   else
     Result:=FntHeight div 2-tp;
   if Result<0 then Result:=0;
 end else Result:=0;
end;
function Tsp_Scale.CalcDrawBounds(fCanvas:TCanvas):TRect;
var j, ti:integer;
begin
 with Result do with fCanvas do
 begin
  if (FFlags and sdfVertical)=0 then
  begin                                          
    ti:=fLineAttr.Width;
    if (rTksCount>0) and ((FFlags and sdfNoTicksLabel)=0) then
    begin
      inc(ti, TickOfs+MjTick+LblOfs+TextHeight('8'));
      Left:=fTksPos[0]-TextWidth(TickLabel(0)) div 2;
      Right:=fTksPos[rTksCount-1]+TextWidth(TickLabel(rTksCount-1)) div 2;
    end
    else if (FFlags and sdfNoTicks)=0 then inc(ti, TickOfs+MjTick);
    if (FFlags and sdfLabelAtTop)=0 then Top:=fO.y else Top:=fO.y-ti+1;
    Bottom:=Top+ti;
    if Left>fO.x then Left:=fO.x;
    if Right<fO.x+fLen then Right:=fO.x+fLen+1;
  end else
  begin                                               
    ti:=fLineAttr.Width;
    if (rTksCount>0) and ((FFlags and sdfNoTicksLabel)=0) then
    begin
      ti:=TextWidth(TickLabel(0));
      for j:=1 to rTksCount-1 do                                     
         if ti< TextWidth(TickLabel(j)) then
            ti:=TextWidth(TickLabel(j));
      inc(ti, TickOfs+MjTick+LblOfs);
      Top:=fTksPos[rTksCount-1]-TextHeight('8')div 2;
      Bottom:=fTksPos[0]+TextHeight('8')div 2;
    end
    else if (FFlags and sdfNoTicks)=0 then inc(ti, TickOfs+MjTick);
    if (FFlags and sdfLabelOnRight)=0 then Left:=fO.x-ti+1 else Left:=fO.x;
    Right:=Left+ti;
    if Top>(fO.y-fLen) then Top:=fO.y-fLen;
    if Bottom<fO.y then Bottom:=fO.y+1;
  end;
 end;
end;                 
procedure Tsp_Scale.DrawLine;                  
var j,st, w,b,e: integer;
begin
 with fLineAttr do if Visible then with fCanvas do
 begin
  Pen.Color:=fLineAttr.Color;
  Pen.Style:=Style;
  Pen.Width:=1;
  Pen.Mode:=pmCopy;
  if (fFlags and sdfRevertTicks)=0 then st:=1 else st:=-1;
  if (FFlags and sdfVertical)=0 then
   begin
     w:=fO.y;
     b:=fO.x-odec; e:=fO.x+fLen+1+einc;
     for j:=1 to Width do begin
      MoveTo(b, w);
      LineTo(e, w);
      inc(w, st);
     end;
   end
  else
   begin
     w:=fO.x;
     e:=fO.y+1+odec; b:=fO.y-fLen-einc;
     for j:=1 to Width do begin
      MoveTo(w, b);
      LineTo(w, e);
      dec(w, st);
     end;
   end;
 end;
end;
procedure Tsp_Scale.DrawTicks;                   
 procedure DrawVert;
 var j:word;
     x,l:integer;
     LS:String; LW:integer;
 begin
  with fCanvas do
  begin
    if ((FFlags and sdfNoTicks)=0) and (rTksCount>0)then
    begin
      if (FFlags and sdfLabelOnRight)=0 then begin
        x:=fO.x-TickOfs-fLineAttr.Width; l:=x-MjTick;
      end else begin
        x:=fO.x+TickOfs+fLineAttr.Width; l:=x+MjTick;
      end;
      for j:=0 to rTksCount-1 do begin             
        MoveTo(x, fTksPos[j]);
        LineTo(l, fTksPos[j]);
      end;
    end;
    if ((FFlags and sdfNoTicksLabel)=0) and (rTksCount>0) then
    begin
      l:=TextHeight('8') div 2;
      if (FFlags and sdfLabelOnRight)=0 then
      begin
        x:=fO.x-TickOfs-fLineAttr.Width-MjTick-LblOfs;
        for j:=0 to rTksCount-1 do begin
          LS:=TickLabel(j);
          LW:=TextWidth(LS);
          TextOut(x-LW, fTksPos[j]-l, LS);
        end;
      end
      else
      begin
        x:=fO.x+TickOfs+fLineAttr.Width+MjTick+LblOfs;
        for j:=0 to rTksCount-1 do begin
          TextOut(x, fTksPos[j]-l, TickLabel(j));
        end;
      end;
    end;                                  
  end;       
 end;             
 procedure DrawHoriz;
 var j:word;
     y,l:integer;
     LS:String;   LW:integer;
 begin
  with fCanvas do
  begin
    if ((FFlags and sdfNoTicks)=0) and (rTksCount>0)then
    begin
      if (FFlags and sdfLabelAtTop)=0 then begin
        y:=fO.y+TickOfs+fLineAttr.Width; l:=y+MjTick;
      end else begin
        y:=fO.y-TickOfs-fLineAttr.Width; l:=y-MjTick;
      end;
      for j:=0 to rTksCount-1 do begin             
        MoveTo(fTksPos[j], y);
        LineTo(fTksPos[j], l);
      end;
    end;
    if ((FFlags and sdfNoTicksLabel)=0) and (rTksCount>0)then
    begin
      if (FFlags and sdfLabelAtTop)=0 then
           y:=fO.y+TickOfs+fLineAttr.Width+MjTick+LblOfs
      else y:=fO.y-TickOfs-fLineAttr.Width-MjTick-LblOfs-TextHeight('8');
      for j:=0 to rTksCount-1 do begin
        LS:=TickLabel(j);
        LW:=TextWidth(LS);
        TextOut(fTksPos[j]-LW div 2, y, LS);
      end;
    end;                                  
  end;       
 end;             
begin            
 if (fFlags and sdfLineOnly)=sdfLineOnly then Exit;
 if (FFlags and sdfVertical)=0 then DrawHoriz
 else DrawVert;
end;             
END.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀久久99精品久久久画质超高清| 国产在线播放一区三区四| 欧美日本在线视频| 99vv1com这只有精品| 国产精品18久久久久久久网站| 日韩码欧中文字| 国产性色一区二区| 亚洲精品在线三区| 日韩无一区二区| 在线成人av影院| 欧美艳星brazzers| 91成人在线免费观看| 99精品视频在线播放观看| 懂色av中文一区二区三区| 韩国女主播成人在线观看| 日韩电影免费在线| 亚洲欧洲日产国产综合网| 国产视频一区在线播放| 久久久噜噜噜久久人人看| 久久综合国产精品| 欧美三级电影网| 欧美日韩国产综合一区二区| 在线观看av不卡| 欧洲亚洲精品在线| 日本精品一区二区三区高清| 一本久久a久久免费精品不卡| 国产自产视频一区二区三区| 九一九一国产精品| 国内精品久久久久影院色| 亚洲国产精品久久人人爱蜜臀| 国产亲近乱来精品视频| 国产欧美日韩精品一区| 日韩三级伦理片妻子的秘密按摩| 一本一道波多野结衣一区二区| 激情欧美一区二区| 天天综合色天天综合| 秋霞电影一区二区| 蜜桃视频在线一区| 性做久久久久久免费观看欧美| 17c精品麻豆一区二区免费| 亚洲精品免费看| 亚洲高清免费观看高清完整版在线观看| 国产欧美精品国产国产专区| 国产精品久久久久久亚洲伦| 亚洲欧美激情一区二区| 性感美女久久精品| 美女视频网站黄色亚洲| 国产精品99久久久久久有的能看| 免费的国产精品| 国产成人免费网站| 色诱视频网站一区| 91精品久久久久久蜜臀| 亚洲精品在线免费播放| 亚洲欧洲另类国产综合| 国产精品女同一区二区三区| 国产色产综合色产在线视频| 精品1区2区在线观看| 亚洲特黄一级片| 午夜久久久久久久久久一区二区| 亚洲图片自拍偷拍| 国产最新精品免费| 色国产精品一区在线观看| 日韩一区二区三区av| 欧美激情在线看| 国产精品区一区二区三区| 亚洲成人一区在线| 国产精品一区二区在线播放 | 亚洲永久精品大片| 肉肉av福利一精品导航| 国产一区美女在线| 色综合天天做天天爱| 色综合咪咪久久| 欧美mv日韩mv国产网站app| 欧美电影免费观看高清完整版 | 国产精品丝袜一区| 亚洲第一主播视频| 国产成人精品在线看| 欧美三级视频在线播放| 久久久午夜电影| 午夜欧美在线一二页| 青椒成人免费视频| 国产又粗又猛又爽又黄91精品| 国产福利不卡视频| 欧美日韩国产高清一区二区三区 | 一区二区三区精品视频| 亚洲国产美国国产综合一区二区| 婷婷丁香久久五月婷婷| 久久精品视频在线免费观看| 国产亚洲欧洲997久久综合| 亚洲电影在线播放| 日本三级亚洲精品| 韩国三级中文字幕hd久久精品| 国产美女久久久久| 欧美伦理视频网站| 国产精品国产三级国产专播品爱网| 伊人色综合久久天天| 国产精品1区2区| 欧美一区二区精品| 亚洲最新视频在线播放| 国产91精品免费| 亚洲精品一区二区三区香蕉 | 水野朝阳av一区二区三区| 成人激情小说网站| 欧美无人高清视频在线观看| 国产精品欧美一区喷水| 亚洲国产精品精华液网站| a级精品国产片在线观看| 26uuu色噜噜精品一区| 奇米影视一区二区三区| 成人永久看片免费视频天堂| 精品久久人人做人人爱| 日本怡春院一区二区| 欧美日韩免费在线视频| 一级做a爱片久久| 94-欧美-setu| 中文字幕av一区二区三区高| 国产综合久久久久影院| 在线看一区二区| 久久久亚洲国产美女国产盗摄 | 麻豆成人久久精品二区三区红 | 欧美在线综合视频| 精品美女被调教视频大全网站| 中文字幕日韩一区二区| 丁香五精品蜜臀久久久久99网站 | 国产午夜精品一区二区三区四区| 亚洲综合色成人| 色先锋资源久久综合| 成人免费视频在线观看| 91在线精品一区二区三区| 国产精品美日韩| 激情综合网av| 欧美老肥妇做.爰bbww视频| 午夜视频在线观看一区二区 | 国产精品夫妻自拍| av影院午夜一区| 中文字幕在线一区| 成a人片国产精品| 成人欧美一区二区三区1314| a在线欧美一区| 亚洲理论在线观看| 欧美最猛黑人xxxxx猛交| 中文字幕va一区二区三区| 理论电影国产精品| 欧美亚洲综合久久| 亚洲gay无套男同| 91视频国产观看| 亚洲国产综合在线| 4438x成人网最大色成网站| 亚洲欧美视频在线观看视频| 成人一级片网址| 亚洲欧洲性图库| 成人动漫视频在线| 久久精品夜夜夜夜久久| 日本视频免费一区| 26uuu久久天堂性欧美| 国产精品一区二区久久不卡| 国产精品伦一区| 欧日韩精品视频| 久久成人免费电影| 国产精品网友自拍| 在线欧美小视频| 一区二区三区欧美视频| 欧美一级日韩免费不卡| 国产成人午夜电影网| 亚洲六月丁香色婷婷综合久久| 99精品热视频| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩视频在线观看一区二区三区| 一区二区三区日韩精品视频| 91麻豆精品国产自产在线| 日韩和的一区二区| 欧美国产乱子伦 | 国产嫩草影院久久久久| 国产成人午夜电影网| 亚洲自拍偷拍av| 久久综合九色综合久久久精品综合 | 国产老肥熟一区二区三区| 日韩一级高清毛片| 成人美女视频在线观看| 午夜欧美一区二区三区在线播放| 欧美日韩精品欧美日韩精品一综合| 亚洲va天堂va国产va久| 欧美麻豆精品久久久久久| 国产成人亚洲综合色影视| 亚洲一区二区三区三| 久久综合狠狠综合久久综合88| 国产精品一区二区不卡| 无吗不卡中文字幕| 欧美激情一区二区三区在线| 欧美日韩高清在线| 粉嫩av亚洲一区二区图片| 天天av天天翘天天综合网色鬼国产| 欧美一区二区精品| 91女厕偷拍女厕偷拍高清| 久久爱www久久做| 亚洲一区国产视频| 中文字幕精品三区| 欧美成人一区二区三区| 国产盗摄精品一区二区三区在线| 亚洲特级片在线|