取一點為中心再每隔一角度畫線 |
尚未結案
|
williams8807
一般會員 發表:40 回覆:37 積分:15 註冊:2003-11-22 發送簡訊給我 |
請問各位先進
我想在Image上用滑鼠一點做為中心點,再每隔24度畫出由中心點往外延伸的直線,可是我畫出來的角度都不一致~~
請各位不吝指點,謝謝!!
以下是我寫的程式:
void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bool Drawing; Image2->Canvas->Pen->Color=clRed; Image2->Canvas->Pen->Width=1; if (Image1->Picture->Bitmap->Empty==true) { ShowMessage("½Ð¥ý¸ü¤J¹ÏÀÉ!!"); Close(); } for(double n=0;n<=360;n=n 24) { double H,W; if ((n>=0)&&(n<90)) { H=X 50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=90)&&(n<180)) { H=X-50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=180)&&(n<270)) { H=X-50*cos(n); W=Y 50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=270)&&(n<=360)) { H=X 50*cos(n); W=Y 50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } } }發表人 - williams8807 於 2004/05/13 17:04:34 發表人 - williams8807 於 2004/05/13 17:07:03 發表人 - williams8807 於 2004/05/13 17:10:37 發表人 - williams8807 於 2004/05/13 17:16:18 |
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言:williams8807你好: cos和sin的用法不對,正確的用法void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bool Drawing; Image2->Canvas->Pen->Color=clRed; Image2->Canvas->Pen->Width=1; if (Image1->Picture->Bitmap->Empty==true) { ShowMessage("½Ð¥ý¸ü¤J¹ÏÀÉ!!"); Close(); } for(double n=0;n<=360;n=n 24) { double H,W; if ((n>=0)&&(n<90)) { H=X 50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=90)&&(n<180)) { H=X-50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=180)&&(n<270)) { H=X-50*cos(n); W=Y 50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=270)&&(n<=360)) { H=X 50*cos(n); W=Y 50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } } } #define pi 3.1415 //求cos60度 n = 60; cos((n/180.0)*pi);^^ |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位先進 我想在Image上用滑鼠一點做為中心點,再每隔24度畫出由中心點往外延伸的直線,可是我畫出來的角度都不一致~~ 請各位不吝指點,謝謝!! 以下是我寫的程式:williams8807 你好: 像這個樣子嗎? < class="code"> #define PI 3.14159 #include "math.h" void __fastcall TForm2::Button4Click(TObject *Sender) { int iTime=360/24; int iXC=200; int iYC=200; int iR=150; for(int i=1; i<=iTime; i++) { Image1->Canvas->MoveTo(iXC, iYC); double dAngle=(double)2*PI*(double)(24*i)/(double)360; int iX=iXC-(double)iR*cos(dAngle); int iY=iYC-(double)iR*sin(dAngle); Image1->Canvas->LineTo(iX, iY); } } -- Enjoy Researching & Developing --void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bool Drawing; Image2->Canvas->Pen->Color=clRed; Image2->Canvas->Pen->Width=1; if (Image1->Picture->Bitmap->Empty==true) { ShowMessage("½Ð¥ý¸ü¤J¹ÏÀÉ!!"); Close(); } for(double n=0;n<=360;n=n+24) { double H,W; if ((n>=0)&&(n<90)) { H=X+50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=90)&&(n<180)) { H=X-50*cos(n); W=Y-50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=180)&&(n<270)) { H=X-50*cos(n); W=Y+50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } else if ((n>=270)&&(n<=360)) { H=X+50*cos(n); W=Y+50*tan(n); Image2->Canvas->MoveTo(X,Y); Image2->Canvas->LineTo(H,W); } } }
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
williams8807
一般會員 發表:40 回覆:37 積分:15 註冊:2003-11-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |