2013年3月29日 星期五

c++ triangle


這是執行檔案,給大家下載去玩
https://skydrive.live.com/redir.aspx?cid=a4872f58128956b2&resid=A4872F58128956B2!268&parid=A4872F58128956B2!267&authkey=!APmGHg_J5c00EGw

下面則是列出MFC主要增加的部分

class CtriangleDlg : public CDialogEx                                //全域變數 抓輸入資料
{
public:
 int number;
        bool start;
//其他略
};

BOOL CtriangleDlg::OnInitDialog()                                  //初始化痊癒變數的數值
{
 start=0;
//其他略
}

void CtriangleDlg::OnPaint()
{
 if (IsIconic())
 {
  //略
 }
 else
 {
  CPaintDC pDC(this);
  if(start==1)                                                       //button按下時開始
  {
  pDC.MoveTo(100,500);     //初始的三點座標
  pDC.LineTo(300,100);
  pDC.LineTo(500,500);
  pDC.LineTo(100,500);
  if(number==0)
   ;
  else
   triangle(100,500,300,100,500,500,0,number,&pDC);
  }
  CDialogEx::OnPaint();
 }
}

void triangle(double x1,double y1,double x2,double y2,double x3,double y3,int count,int N,CPaintDC* draw)
{
 double leftx=(x1+x2)/2;
 double lefty=(y1+y2)/2;
 double rightx=(x1+x3)/2;
 double righty=(y1+y3)/2;
 double downx=(x2+x3)/2;
 double downy=(y2+y3)/2;
 draw->MoveTo(int(leftx),int(lefty));
 draw->LineTo(int(rightx),int(righty));
 draw->LineTo(int(downx),int(downy));
 draw->LineTo(int(leftx),int(lefty));
 count++;
 if(count<N)
 {
  triangle(leftx,lefty,x2,y2,downx,downy,count,N,draw);
  triangle(x1,y1,leftx,lefty,rightx,righty,count,N,draw);
  triangle(rightx,righty,downx,downy,x3,y3,count,N,draw);
 }
}

void CtriangleDlg::OnBnClickedButton1()
{
 CString tmp;
 GetDlgItemText(IDC_EDIT1,tmp);                    //抓取edit box的資料
 number= _ttoi(tmp.GetBuffer(0));
 start=1;
 Invalidate();                                                        //畫面清空重新畫圖
}

沒有留言:

張貼留言