PDA

View Full Version : کمک در برنامه ی گرافیک سی شارپ



mehrnaz90
چهارشنبه 17 آبان 1391, 16:54 عصر
Pen pen = new Pen(Color.Yellow, 4);





public Form1()

{

InitializeComponent();

}





private void button1_Click(object sender, EventArgs e)

{





Double teta = 0;







Graphics g = this.CreateGraphics();

g.Clear(



Color.Black);





for (double j = 0; j <= 1000; j+=5, teta +=5)

{







int cx =150+(int)j;





int cy =150;

g.DrawEllipse(pen, cx-100 ,cy-100,200, 200); اینجا چرا حتما باید مقدارcx و cy از مقدار شعاع که 100 هست کم بشه؟؟؟؟





// int Ya = 0;

 





double alpha = teta * 3.14 / 180;





int Xb = (int)(100* Math.Cos(alpha));





int Yb = (int)(100* Math.Sin(alpha));

Xb += cx; Yb += cy;





//for (int i = 1; i <= 5; i++)





//{





//a = i * 72;





int Xa1 = Xb - cx;





int Ya1 = Yb - cy;

alpha = teta * 3.14 / 180;





int Xb1 = (int)(Xa1 * Math.Cos(alpha) - Ya1 * Math.Sin(alpha));





int Yb1 = (int)(Xa1 * Math.Sin(alpha) + Ya1 * Math.Cos(alpha));

Xb1 += cx; Yb1 += cy;



g.DrawLine(pen, cx, cy, Xb1, Yb1);





//}//for i





for (double wait = 0; wait < 10000000; wait++) ;

g.Clear(



Color.Black);

دوستان کسی میدونه این خطوطی که قرمز هستن دقیقا چه کاری انجام میدن؟؟؟؟ لطفا به زبان ساده توضیح بدید . ممنون میشم هرچه سریعتر جوابمو بدید :گریه::گریه:

hakim22
چهارشنبه 17 آبان 1391, 21:55 عصر
g.DrawEllipse(pen, cx-100 ,cy-100,200, 200); اینجا چرا حتما باید مقدارcx و cy از مقدار شعاع که 100 هست کم بشه؟؟؟؟



برای اینکه مبدا مختصات در فرمهای ویندوز گوشه ی بالا سمت چپ است. و مختصات صفر و صفرگوشه میوفته و اگر دایره رو در مبدا صفر و صفر رسم کنیم گوشش دیده میشه.
دایره در دات نت بر اساس مربع محاطش ترسیم میشه.



int Xb = (int)(100* Math.Cos(alpha));


int Yb = (int)(100* Math.Sin(alpha));

Xb += cx; Yb += cy;


مقادیر حاصل از سینوس و کسینوس همیشه بین -1 و 1 است. و مختصات در فرمهای ویندوز همیشه اعداد صحیح از نوع int است. اگر بدون ضرب کردن در 100 استفاده بشه مقدار حاصل از سینوس و کسینوس همیشه صفر میمونه.

mehrnaz90
پنج شنبه 18 آبان 1391, 20:36 عصر
ممنونم ولی من میخوام بدونم که توی این خط g.DrawEllipse(pen, cx-100 ,cy-100,200, 200); "حتما" باید cxو cy رو از شعاع کم کنیم یا از هر عددی کم گنیم مشکلی نیست؟ اگه کم نکنیم چی میشه؟؟

این xbوyb " دقیقا " چیو نگه میدارن؟ به چه کاری میان؟ اصلا این خط چیکار میکنه؟
int Xb = (int)(100* Math.Cos(alpha));

int Yb = (int)(100* Math.Sin(alpha));

Xb += cx; Yb += cy;