ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学绘秀曲线图

2021-06-06 22:07:14  阅读:304  来源: 互联网

标签:10 Canvas LineTo end 曲线图 num pts 学绘秀


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

o_10021002.png

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;

o_10021003.png

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;

o_10021004.png


posted on 2010-02-10 23:24  万一  阅读(5737)  评论(7)  编辑  收藏

标签:10,Canvas,LineTo,end,曲线图,num,pts,学绘秀
来源: https://blog.51cto.com/u_14617575/2873179

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有