随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万


偶然从 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;




posted on   万一  阅读(6318)  评论(7编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2009-02-10 多线程编程(3) - 从 CreateThread 说起[续]
2009-02-10 多线程编程(2) - 从 CreateThread 说起
2008-02-10 WinAPI: DrawFrameControl - 绘制控件
2008-02-10 WinAPI: SetPixel 和 SetPixelV - 设置设备环境中指定位置的颜色
2008-02-10 WinAPI: GetPixel - 获取设备环境中指定位置的颜色
2008-02-10 WinAPI: DrawCaption - 绘制标题栏
2008-02-10 WinAPI: CreateBrushIndirect - 根据画刷结构建立画刷


点击右上角即可分享
微信分享提示