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

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

?? winplot.pas

?? Delphi 的數(shù)學控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
    CheckPoint := not(XOutOfBounds(Xp) or YOutOfBounds(Yp));
  end;

  procedure PlotSymbol(Canvas       : TCanvas;
                       Xp, Yp       : Integer;
                       Symbol, Size : Integer);
  { Plots a symbol at pixel coordinates (Xp, Yp)
    with the current canvas settings }
  var
    Xp1, Xp2, Yp1, Yp2 : Integer;
  begin
    if (Symbol < 0) or (Symbol > MAXSYMBOL) then Exit;

    Size := Size * SymbolSizeUnit;
    Xp1 := Xp - Size;
    Yp1 := Yp - Size;
    Xp2 := Xp + Size + 1;
    Yp2 := Yp + Size + 1;

    with Canvas do
      case Symbol of
        0    : Pixels[Xp, Yp] := Brush.Color;
        1, 2 : Ellipse(Xp1, Yp1, Xp2, Yp2);    { Circle }
        3, 4 : Rectangle(Xp1, Yp1, Xp2, Yp2);  { Square }
        5, 6 : Polygon([Point(Xp1, Yp2 - 1),
                        Point(Xp2, Yp2 - 1),
                        Point(Xp, Yp1 - 1)]);  { Triangle }
        7 : begin                              { + }
              MoveTo(Xp, Yp1);
              LineTo(Xp, Yp2);
              MoveTo(Xp1, Yp);
              LineTo(Xp2, Yp);
            end;
        8 : begin                              { x }
              MoveTo(Xp1, Yp1);
              LineTo(Xp2, Yp2);
              MoveTo(Xp1, Yp2 - 1);
              LineTo(Xp2, Yp1 - 1);
            end;
        9 : begin                              { * }
              MoveTo(Xp, Yp1);
              LineTo(Xp, Yp2);
              MoveTo(Xp1, Yp);
              LineTo(Xp2, Yp);
              MoveTo(Xp1, Yp1);
              LineTo(Xp2, Yp2);
              MoveTo(Xp1, Yp2 - 1);
              LineTo(Xp2, Yp1 - 1);
            end;
        end;
  end;

  procedure PlotLine(Canvas             : TCanvas;
                     Xp1, Yp1, Xp2, Yp2 : Integer);
  { Plots a line with the current canvas settings }
  begin
    Canvas.MoveTo(Xp1, Yp1);
    Canvas.LineTo(Xp2, Yp2);
  end;

  procedure PlotPoint(Canvas     : TCanvas;
                      X, Y       : Float;
                      PointParam : TPointParam);
  var
    Xp, Yp : Integer;
    BrushStyle : TBrushStyle;
    PenColor, BrushColor : TColor;
  begin
    if XAxis.Scale = LOG_SCALE then X := Log10(X);
    if YAxis.Scale = LOG_SCALE then Y := Log10(Y);

    if not CheckPoint(X, Y, Xp, Yp) then Exit;

    with Canvas do
      begin
        { Save current settings }
        PenColor := Pen.Color;
        BrushColor := Brush.Color;
        BrushStyle := Brush.Style;

        Pen.Color := PointParam.Color;
        Brush.Color := PointParam.Color;
        if PointParam.Symbol in [0, 1, 3, 5] then
          Brush.Style := bsSolid
        else
          Brush.Style := bsClear;

        PlotSymbol(Canvas, Xp, Yp, PointParam.Symbol, PointParam.Size);

        { Restore settings }
        Pen.Color := PenColor;
        Brush.Color := BrushColor;
        Brush.Style := BrushStyle;
      end;
  end;

  procedure PlotErrorBar(Canvas       : TCanvas;
                         Y, S         : Float;
                         Ns           : Integer;
                         Xp, Yp, Size : Integer);
  { Plots an error bar with the current canvas settings }
  var
    Delta, Y1 : Float;
    Yp1 : Integer;
  begin
    Size := Size * SymbolSizeUnit;

    Delta := Ns * S;
    Y1 := Y - Delta;
    if YAxis.Scale = LOG_SCALE then Y1 := Log10(Y1);
    Yp1 := Ypixel(Y1);

    if Yp1 <= YmaxPixel then
      begin
        PlotLine(Canvas, Xp - Size, Yp1, Xp + Size + 1, Yp1);
        PlotLine(Canvas, Xp, Yp, Xp, Yp1);
      end
    else
      PlotLine(Canvas, Xp, Yp, Xp, YmaxPixel);

    Y1 := Y + Delta;
    if YAxis.Scale = LOG_SCALE then Y1 := Log10(Y1);
    Yp1 := Ypixel(Y1);

    if Yp1 >= YminPixel then
      begin
        PlotLine(Canvas, Xp - Size, Yp1, Xp + Size + 1, Yp1);
        PlotLine(Canvas, Xp, Yp, Xp, Yp1);
      end
    else
      PlotLine(Canvas, Xp, Yp, Xp, YminPixel);
  end;

  procedure GenPlotCurve(Canvas         : TCanvas;
                         X, Y, S        : TVector;
                         Ns             : Integer;
                         Lbound, Ubound : Integer;
                         CurvParam      : TCurvParam;
                         ErrorBars      : Boolean);
  { General curve plotting routine }
  var
    X1, Y1, X2, Y2 : Float;
    Xp1, Yp1, Xp2, Yp2 : Integer;
    I : Integer;
    Flag1, Flag2 : Boolean;
    PenWidth : Integer;
    PenStyle : TpenStyle;
    PenColor, BrushColor : TColor;
    BrushStyle : TBrushStyle;
  begin
    with Canvas do
      begin
        { Save current settings }
        PenColor := Pen.Color;
        PenStyle := Pen.Style;
        PenWidth := Pen.Width;
        BrushColor := Brush.Color;
        BrushStyle := Brush.Style;

        Pen.Color := CurvParam.LineParam.Color;
        Pen.Style := CurvParam.LineParam.Style;
        Pen.Width := CurvParam.LineParam.Width;
        Brush.Color := CurvParam.PointParam.Color;

        if CurvParam.PointParam.Symbol in [0, 1, 3, 5] then
          Brush.Style := bsSolid
        else
          Brush.Style := bsClear;

        { Plot first point }
        X1 := X[Lbound]; if XAxis.Scale = LOG_SCALE then X1 := Log10(X1);
        Y1 := Y[Lbound]; if YAxis.Scale = LOG_SCALE then Y1 := Log10(Y1);
        Flag1 := CheckPoint(X1, Y1, Xp1, Yp1);
        if Flag1 then
          begin
            PlotSymbol(Canvas, Xp1, Yp1, CurvParam.PointParam.Symbol,
                                 CurvParam.PointParam.Size);
            if ErrorBars and (S[Lbound] > 0.0) then
              PlotErrorBar(Canvas, Y[Lbound], S[Lbound], Ns, Xp1, Yp1,
                                 CurvParam.PointParam.Size);
          end;

        { Plot other points and connect them by lines if necessary }
        I := Lbound + CurvParam.Step;
        while I <= Ubound do
          begin
            X2 := X[I]; if XAxis.Scale = LOG_SCALE then X2 := Log10(X2);
            Y2 := Y[I]; if YAxis.Scale = LOG_SCALE then Y2 := Log10(Y2);
            Flag2 := CheckPoint(X2, Y2, Xp2, Yp2);
            if Flag2 then
              begin
                PlotSymbol(Canvas, Xp2, Yp2, CurvParam.PointParam.Symbol,
                                       CurvParam.PointParam.Size);
                if ErrorBars and (S[I] > 0.0) then
                  PlotErrorBar(Canvas, Y[I], S[I], Ns, Xp2, Yp2,
                                  CurvParam.PointParam.Size);
                if CurvParam.Connect and Flag1 then
                  PlotLine(Canvas, Xp1, Yp1, Xp2, Yp2);
              end;

            Xp1 := Xp2;
            Yp1 := Yp2;
            Flag1 := Flag2;
            Inc(I, CurvParam.Step);
          end;

        { Restore settings }
        Pen.Color := PenColor;
        Pen.Style := PenStyle;
        Pen.Width := PenWidth;
        Brush.Color := BrushColor;
        Brush.Style := BrushStyle;
      end;
  end;

  procedure PlotCurve(Canvas         : TCanvas;
                      X, Y           : TVector;
                      Lbound, Ubound : Integer;
                      CurvParam      : TCurvParam);
  const
    Ns = 0;    { Dummy variables }
    S  = nil;
  begin
    GenPlotCurve(Canvas, X, Y, S, Ns, Lbound, Ubound, CurvParam, False);
  end;

  procedure PlotCurveWithErrorBars(Canvas         : TCanvas;
                                   X, Y, S        : TVector;
                                   Ns             : Integer;
                                   Lbound, Ubound : Integer;
                                   CurvParam      : TCurvParam);
  begin
    GenPlotCurve(Canvas, X, Y, S, Ns, Lbound, Ubound, CurvParam, True);
  end;

  procedure PlotFunc(Canvas     : TCanvas;
                     Func       : TFunc;
                     Xmin, Xmax : Float;
                     Npt        : Integer;
                     LineParam  : TLineParam);
  var
    PenColor : TColor;
    PenStyle : TpenStyle;
    PenWidth : Integer;
    X1, Y1, X2, Y2, H : Float;
    Xp1, Yp1, Xp2, Yp2 : Integer;
    Flag1, Flag2 : Boolean;
    I : Integer;
  begin
    if (Npt < 2) or (LineParam.Style = psClear) then Exit;

    if Xmin >= Xmax then
      begin
        Xmin := XAxis.Min;
        Xmax := XAxis.Max;
      end;

    H := (Xmax - Xmin) / Npt;

    with Canvas do
      begin
        { Save current settings }
        PenColor := Pen.Color;
        PenStyle := Pen.Style;
        PenWidth := Pen.Width;

        Pen.Color := LineParam.Color;
        Pen.Style := LineParam.Style;
        Pen.Width := LineParam.Width;

        { Check first point }
        X1 := Xmin;
        if XAxis.Scale = LIN_SCALE then
          Y1 := Func(X1)
        else
          Y1 := Func(Exp10(X1));
        if YAxis.Scale = LOG_SCALE then Y1 := Log10(Y1);
        Flag1 := CheckPoint(X1, Y1, Xp1, Yp1);

        { Check other points and plot lines if possible }
        for I := 1 to Npt do
          begin
            X2 := X1 + H;
            if XAxis.Scale = LIN_SCALE then
              Y2 := Func(X2)
            else
              Y2 := Func(Exp10(X2));
            if YAxis.Scale = LOG_SCALE then Y2 := Log10(Y2);
            Flag2 := CheckPoint(X2, Y2, Xp2, Yp2);
            if Flag1 and Flag2 then
              PlotLine(Canvas, Xp1, Yp1, Xp2, Yp2);
            X1 := X2;
            Xp1 := Xp2;
            Yp1 := Yp2;
            Flag1 := Flag2;
          end;

        { Restore settings }
        Pen.Color := PenColor;
        Pen.Style := PenStyle;
        Pen.Width := PenWidth;
      end;
  end;

  procedure DimCurvParamVector(var CurvParam : TCurvParamVector;
                               Ubound : Integer);
  var
    I : Integer;
  begin
    { Check bounds }
    if Ubound < 0 then
      begin
        CurvParam := nil;
        Exit;
      end;

    { Allocate vector }
    SetLength(CurvParam, Succ(Ubound));
    if CurvParam = nil then Exit;

    { Initialize curve parameters }
    for I := 0 to Ubound do
      with CurvParam[I] do
        begin
          if I = 0 then
            begin
              PointParam.Symbol := 0;
              PointParam.Size := 0;
              PointParam.Color := clBlack;
              Legend := '';
            end
          else
            begin
              PointParam.Symbol := (I - 1) mod MAXSYMBOL + 1;
              PointParam.Size := 1;
              PointParam.Color := CurvColor[(I - 1) mod MAXCOLOR + 1];
              Legend := 'Y' + IntToStr(I);
            end;
          LineParam.Width := 1;
          LineParam.Style := psSolid;
          LineParam.Color := PointParam.Color;
          Connect := False;
          Step := 1;
        end;
  end;

  procedure WriteLegend(Canvas     : TCanvas;
                        NCurv      : Integer;
                        CurvParam  : TCurvParamVector;
                        ShowPoints,
                        ShowLines  : Boolean);

  var
    CharHeight, I, L, Lmax, N, Nmax, Xp, Xl, Y : Integer;
    PenWidth : Integer;
    PenStyle : TpenStyle;
    PenColor, BrushColor : TColor;
    BrushStyle : TBrushStyle;
  begin
    N := 0;     { Nb of legends to be plotted  }
    Lmax := 0;  { Length of the longest legend }

    for I := 1 to NCurv do
      if CurvParam[I].Legend <> '' then
        begin
          Inc(N);
          L := Canvas.TextWidth(CurvParam[I].Legend);
          if L > Lmax then Lmax := L;
        end;

    if (N = 0) or (Lmax = 0) then Exit;

    { Character height }
    CharHeight := Canvas.TextHeight('M');

    { Max. number of legends which may be plotted }
    Nmax := Round((YmaxPixel - YminPixel) / CharHeight) - 1;
    if N > Nmax then N := Nmax;

    { Draw rectangle around the legends }
    Canvas.Rectangle(XmaxPixel + Round(0.02 * GraphWidth), YminPixel,
                     XmaxPixel + Round(0.12 * GraphWidth) + Lmax,
                     YminPixel + (N + 1) * CharHeight);

    L := Round(0.02 * GraphWidth);  { Half-length of line }
    Xp := XmaxPixel + 3 * L;        { Position of symbol  }
    Xl := XmaxPixel + 5 * L;        { Position of legend  }

    { Save current settings }
    with Canvas do
      begin
        PenColor := Pen.Color;
        PenStyle := Pen.Style;
        PenWidth := Pen.Width;
        BrushColor := Brush.Color;
        BrushStyle := Brush.Style;
      end;

    for I := 0 to Min(NCurv, Nmax) do
      with Canvas do
        begin
          Pen.Color := CurvParam[I].LineParam.Color;
          Pen.Style := CurvParam[I].LineParam.Style;
          Pen.Width := CurvParam[I].LineParam.Width;
          Brush.Color := CurvParam[I].PointParam.Color;

          if CurvParam[I].PointParam.Symbol in [0, 1, 3, 5] then
            Brush.Style := bsSolid
          else
            Brush.Style := bsClear;

          { Plot point and line }
          Y := YminPixel + I * CharHeight;
          if ShowPoints then
            PlotSymbol(Canvas, Xp, Y, CurvParam[I].PointParam.Symbol,
                                      CurvParam[I].PointParam.Size);
          if ShowLines then
            PlotLine(Canvas, Xp - L, Y, Xp + L, Y);

          { Write legend }
          Brush.Style := bsClear;
          Canvas.TextOut(Xl, Y - CharHeight div 2, CurvParam[I].Legend);
        end;

    { Restore settings }
    with Canvas do
      begin
        Pen.Color := PenColor;
        Pen.Style := PenStyle;
        Pen.Width := PenWidth;
        Brush.Color := BrushColor;
        Brush.Style := BrushStyle;
      end;
  end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
曰韩精品一区二区| 高清成人在线观看| 亚洲综合色成人| 亚洲免费在线视频| 性做久久久久久| 男人的j进女人的j一区| 五月婷婷久久丁香| 国产福利一区在线| 欧美天堂亚洲电影院在线播放| 色综合色综合色综合色综合色综合 | 久久精品一区二区三区四区| 欧美国产在线观看| 久久se精品一区精品二区| 国产·精品毛片| 欧美大黄免费观看| 亚洲精品国产一区二区精华液| 午夜精品在线视频一区| 久久99精品国产麻豆不卡| 99这里都是精品| 欧美精品一区二区三区蜜臀| 亚洲成av人片一区二区三区| 国产成人免费av在线| 精品粉嫩超白一线天av| 一区二区三区小说| 色偷偷久久人人79超碰人人澡| 久久先锋资源网| 国产成人自拍在线| 日韩视频免费观看高清完整版在线观看| 中文字幕乱码久久午夜不卡| 日韩不卡免费视频| 666欧美在线视频| 午夜视黄欧洲亚洲| 欧美一级二级在线观看| 亚洲超碰精品一区二区| 欧美肥妇free| 国产麻豆视频一区二区| 2021久久国产精品不只是精品| 麻豆精品国产传媒mv男同| 国产精品一区2区| 久久精品人人做| 色婷婷国产精品| 久久精品免费观看| 中文字幕中文字幕中文字幕亚洲无线 | 国产欧美一区二区精品婷婷| 成人一区二区三区视频 | 在线播放日韩导航| 精品午夜久久福利影院| 国产日韩欧美a| 欧美亚洲尤物久久| 国产999精品久久| 中文字幕在线不卡国产视频| 欧美日韩国产系列| 国产一区免费电影| 偷拍一区二区三区四区| 久久久91精品国产一区二区三区| 91在线精品一区二区| 精品一区二区在线观看| 亚洲第一会所有码转帖| 欧美国产一区视频在线观看| 精品国产伦一区二区三区免费| 日本高清无吗v一区| 96av麻豆蜜桃一区二区| 人禽交欧美网站| 亚洲国产精品自拍| 亚洲成人精品一区二区| 亚洲欧洲精品一区二区三区| 欧美va在线播放| 日本一区二区免费在线观看视频 | 国产欧美视频一区二区| 欧美成人三级电影在线| 欧美一区二区精美| 日韩一卡二卡三卡| 精品精品欲导航| 欧美日韩在线播放一区| 欧美日韩性生活| 日韩一区二区在线免费观看| 日韩三级视频在线看| 精品卡一卡二卡三卡四在线| 欧美xxx久久| 亚洲欧洲在线观看av| 亚洲最新视频在线播放| 蜜臀av在线播放一区二区三区| 免费成人av资源网| 成人高清在线视频| 337p亚洲精品色噜噜噜| 亚洲精品在线电影| 国产精品久久久久婷婷| 亚洲一区二区三区视频在线| 久久99精品国产.久久久久 | 久久人人爽爽爽人久久久| 久久久国产午夜精品| 一区二区免费看| 福利电影一区二区三区| 91精品国产综合久久精品图片| 久久久久久一二三区| 一区二区激情小说| 99久久综合色| 久久久精品天堂| 老司机精品视频线观看86| 欧美在线播放高清精品| 中文字幕在线观看一区| 韩日欧美一区二区三区| 精品视频资源站| 午夜亚洲国产au精品一区二区| 国产一区二区在线观看免费| 欧美顶级少妇做爰| 午夜欧美大尺度福利影院在线看| a在线欧美一区| 亚洲欧美精品午睡沙发| 成人免费视频一区二区| 欧美极品美女视频| 99久久久久久99| 亚洲一级在线观看| 69堂精品视频| 国内精品伊人久久久久影院对白| 精品国产123| 成人18精品视频| 亚洲第一电影网| 26uuu国产电影一区二区| 粉嫩av亚洲一区二区图片| 国产精品你懂的在线| 欧美日韩在线不卡| 国产乱一区二区| 亚洲高清视频在线| 久久色在线视频| 欧美亚洲日本国产| 国产一区二区成人久久免费影院| 国产精品成人网| 欧美一区二区三区啪啪| 99久久免费国产| 国产真实乱对白精彩久久| 最新不卡av在线| 亚洲精品在线免费播放| 欧美性欧美巨大黑白大战| 丁香另类激情小说| 久久99热这里只有精品| 首页国产欧美久久| 亚洲一区二区视频| 国产欧美一区二区精品忘忧草| 欧美色图天堂网| 一本到不卡免费一区二区| 国产美女精品一区二区三区| 日本不卡视频在线观看| 午夜精品在线视频一区| 亚洲午夜在线视频| 一区二区免费看| 亚洲444eee在线观看| 一二三四社区欧美黄| 亚洲精品国产第一综合99久久| 中文字幕一区二区视频| 亚洲国产精品传媒在线观看| 国产日韩v精品一区二区| 久久亚洲精品小早川怜子| 51精品国自产在线| 欧美va亚洲va国产综合| 国产日韩欧美a| 亚洲综合一二区| 青青青爽久久午夜综合久久午夜| 日日摸夜夜添夜夜添亚洲女人| 丝袜诱惑制服诱惑色一区在线观看 | 日本强好片久久久久久aaa| 天堂精品中文字幕在线| 国产成人精品亚洲午夜麻豆| 丁香五精品蜜臀久久久久99网站| 成人免费观看男女羞羞视频| 欧美视频一区二区| 久久免费电影网| 亚洲一区二区在线免费观看视频| 久久精品国产99国产精品| 国产电影精品久久禁18| 欧美日韩免费电影| 中文字幕国产一区二区| 青青草97国产精品免费观看无弹窗版| 国内精品伊人久久久久影院对白| 在线观看精品一区| 欧美激情一区三区| 久久66热re国产| 91精品在线免费| 首页国产欧美日韩丝袜| 91精品福利在线| 亚洲综合一区二区三区| 不卡的av电影| 亚洲三级免费观看| www.成人网.com| 亚洲精品免费在线播放| proumb性欧美在线观看| 国产欧美一区二区精品久导航| 麻豆久久久久久久| 国产日韩欧美制服另类| 大胆亚洲人体视频| 一区二区三区日韩欧美精品| 色综合久久中文字幕| 亚洲国产成人91porn| 欧美精选一区二区| 久久福利视频一区二区| 国产日产亚洲精品系列| 色婷婷综合久久久中文一区二区| 一区二区三区日韩欧美| 欧美一区二区视频免费观看| 蜜桃av一区二区三区|