zoukankan      html  css  js  c++  java
  • 学绘秀曲线图


    偶然从 http://blog.csdn.net/hero82748274/archive/2010/02/10/5304386.aspx 看到了秀曲线图, 就用 GDI 模仿了一下; 如果用 GDI+ 绘制, 图形会细腻很多.



    procedure TForm1.FormPaint(Sender: TObject);
    var
      i,j,num,X,Y: Integer;
    begin
      num := 60;
      X := 300;
      Y := 300;
      ClientWidth := 2 * X;
      ClientHeight := 2 * Y;
    
      Canvas.Pen.Width := 1;
      Canvas.Pen.Color := clWhite;
      Canvas.Brush.Color := clNavy;
      Canvas.FillRect(ClientRect);
    
      for i := 0 to num do for j := 0 to 1 do
      begin
        Canvas.MoveTo(X, i*10);
        if i < 30 then
          if j = 0 then Canvas.LineTo(X-i*10, Y) else Canvas.LineTo(X+i*10, Y)
        else
          if j = 0 then Canvas.LineTo(X-(num-1-i)*10, Y) else Canvas.LineTo(X+(num-1-i)*10, Y);
      end;
    end;
    



    procedure TForm1.FormPaint(Sender: TObject);
    var
      i,j,num,n,X,Y: Integer;
      angle: Single;
      pts: array of array of TPoint;
    begin
      num := 20;
      n := 6; { 改为 n := 11 就是成了下一个图形 }
      angle := -2 * PI / n;
      X := 210;
      Y := 210;
      ClientWidth := 2*X;
      ClientHeight := 2*Y;
    
      Canvas.Pen.Width := 1;
      Canvas.Pen.Color := clWhite;
      Canvas.Brush.Color := clNavy;
      Canvas.FillRect(ClientRect);
    
      SetLength(pts, n+1, num);
      for i := 0 to n do
      begin
        for j := 0 to num-1 do
        begin
          pts[i,j] := Point(Trunc(j*10*Cos(angle*i)+X), Trunc(j*10*Sin(angle*i)+Y));
          Canvas.MoveTo(pts[i,j].X, pts[i,j].Y);
          if i = 0 then
            Canvas.LineTo((num-j)*10+X, Y)
          else
            Canvas.LineTo(pts[i-1, num-1-j].X, pts[i-1, num-1-j].Y);
        end;
      end;
    end;
    



  • 相关阅读:
    PHP连接FTP服务的简单实现
    Map遍历
    线程的互斥与同步
    Java中Collections.sort()排序详解
    Echarts的赋值,设置数据
    JSON和GSON的使用
    发送邮箱验证
    java中获取服务器的IP和端口
    一个题目涉及到的50个Sql语句
    JAVA面试题二
  • 原文地址:https://www.cnblogs.com/del/p/1667347.html
Copyright © 2011-2022 走看看