Art.cpp
上传用户:lulishicai
上传日期:2010-03-01
资源大小:13202k
文件大小:3k
源码类别:

Delphi/CppBuilder

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "math.h"
  5. #include "Art.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma resource "*.dfm"
  9. TForm1 *Form1;
  10. //---------------------------------------------------------------------------
  11. __fastcall TForm1::TForm1(TComponent* Owner)
  12.         : TForm(Owner)
  13. {
  14. }
  15. //---------------------------------------------------------------------------
  16. void __fastcall TForm1::FormCreate(TObject *Sender)
  17. {
  18. Form1->Image1->Visible=false;
  19. Form1->Image2->Visible=false;
  20. //设置图象控件都处于不可见状态
  21. Form1->Image1->Transparent=true;
  22. Form1->Image2->Transparent=true;
  23. //设置图象的背景色为透明
  24. }
  25. //---------------------------------------------------------------------------
  26. void __fastcall TForm1::Button1Click(TObject *Sender)
  27. {
  28.     float x1[120];
  29.     float y1[120];
  30.     float x2[120];
  31.     float y2[120];
  32.     float pi;
  33.     int n;
  34.     int r;
  35.     float a;
  36.     int i;
  37.     float t;
  38.     float x;
  39.     float y;
  40.     int k;
  41.     //变量定义
  42. Form1->Image1->Visible=true;
  43. Form1->Image2->Visible=false;
  44. //设置控件可见性
  45. pi=3.1415926;
  46. n=50;
  47. r=280;
  48. i=0;
  49. a=0;
  50. //变量赋值
  51. for (i=1;i<120;i++)
  52.     {
  53.     x1[i]=r*cos(a);
  54.     y1[i]=(-1)*r*sin(a)/2;
  55.     a=a+pi/60;
  56.     }
  57. r=100;
  58. i=0;
  59. a=0;
  60. for (i=0;i<=120;i++)
  61.     {
  62.     t=(r*(1+1/2*sin(12*a)))*(1/2+1/2*sin(4*a));
  63.     x2[i]=t*cos(a);
  64.     y2[i]=(-1)*t*sin(a)/2;
  65.     a=a+pi/60;
  66.     }
  67. for (k=0;k<=n;k++)
  68.     {
  69.     for(i=0;i<=120;i++)
  70.         {
  71.         x=(x2[i]-x1[i])/n*k+x1[i];
  72.         y=(y2[i]-y1[i])/n*k+y1[i];
  73.         x=x+300;
  74.         y=y+150;
  75.         if (i==0)
  76.            {
  77.            Form1->Image1->Canvas->MoveTo((x/2),(y));
  78.            }
  79.         Form1->Image1->Canvas->LineTo((x*1.1/2),(y));
  80.         }
  81.      }
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TForm1::Button2Click(TObject *Sender)
  85. {
  86.     float t,x0,y0;
  87.     float r;
  88.     int n,j,i;
  89.     float x[50];
  90.     float y[50];
  91.     //变量定义
  92. Form1->Image2->Visible=true;
  93. Form1->Image1->Visible=false;
  94. //设置控件可见性
  95. n=25;
  96. //设置分段数
  97. t=6.28318/n;
  98. r=130;
  99. //设置半径
  100. x0= 180;
  101. y0= 150;
  102. //设置图案的中心点
  103. for (i=0;i<=n;i++)
  104.     {
  105.     x[i]=r*cos(i*t)+x0;
  106.     y[i]=r*sin(i*t)+y0;
  107.     //通过循环求出"金刚石" 图案的坐标点
  108.     }
  109. for (i=0;i<=n;i++)
  110.     {
  111.      for(j=i+1;j<=n-1;j++)
  112.         {
  113.            Form1->Image2->Canvas->MoveTo((x[i]),(y[i]));
  114.            Form1->Image2->Canvas->LineTo((x[j]),(y[j]));
  115.            //连线
  116.          }
  117.      }
  118. }
  119.