PDA

View Full Version : سوال: مشکل در چرخاندن دایره حول مرکز مختصات



headshoter
یک شنبه 29 اردیبهشت 1392, 14:28 عصر
سلام دوستان ؛

من با استفاده از تابع drawpie یک دایره کشیدم که از 6 قطاع مساوی ساخته شده ،


privatevoid button1_Click(object sender, EventArgs e)



{


int j=30;

Graphics g1 = this.CreateGraphics();

Pen p1=newPen(Color.Black,2);

for (int i = 0; i < 4; i++, j += 60)



{

g1.DrawPie(p1, 20, 20, 200, 200, j, 180);

}

}




حالا میخوام که این دایره رو حول مرکز مختصات بچرخونم ! ولی نمیدونم چجوری باید این کار رو بکنم .

لطفا اگه شما بلد هستین راهنمایی بفرمایین.

ممنون .

drawback
دوشنبه 30 اردیبهشت 1392, 08:38 صبح
با استفاده از این دستور میشه یه خط را حول محور یه دایره چرخوند این دستور برای حرکت عقربه در ساعت به کار میرود

double a,b;
Single x, y, r1, r2, wx, wy, wx2, wy2;
double pi =3.14,p = 3.14 ;



private void timer1_Tick(object sender, EventArgs e)
{
x = lineShape1.X2 - lineShape1.X1;
y = lineShape1.Y2 - lineShape1.Y1;
r1 = Convert.ToInt32(Math.Sqrt(x * x + y * y));
wx = lineShape1.X1;
wy = lineShape1.Y1;




a += pi / 30;
lineShape1.X2 = Convert.ToInt32(wx + Math.Sin(a) * r1);
lineShape1.Y2 = Convert.ToInt32(wy - Math.Cos(a) * r1);


}

private void timer2_Tick(object sender, EventArgs e)
{
x = lineShape2.X2 - lineShape2.X1;
y = lineShape2.Y2 - lineShape2.Y1;
r2 = Convert.ToInt32(Math.Sqrt(x * x + y * y));
wx2 = lineShape2.X1;
wy2 = lineShape2.Y1;



b += p / 30;
lineShape2.X2 = Convert.ToInt32(wx2 + Math.Sin(b) * r2);
lineShape2.Y2 = Convert.ToInt32(wy2 - Math.Cos(b) * r2);
}
امیدوارم این دستور کمکتون کنه

headshoter
دوشنبه 30 اردیبهشت 1392, 11:59 صبح
با استفاده از این دستور میشه یه خط را حول محور یه دایره چرخوند این دستور برای حرکت عقربه در ساعت به کار میرود

double a,b;
Single x, y, r1, r2, wx, wy, wx2, wy2;
double pi =3.14,p = 3.14 ;



private void timer1_Tick(object sender, EventArgs e)
{
x = lineShape1.X2 - lineShape1.X1;
y = lineShape1.Y2 - lineShape1.Y1;
r1 = Convert.ToInt32(Math.Sqrt(x * x + y * y));
wx = lineShape1.X1;
wy = lineShape1.Y1;




a += pi / 30;
lineShape1.X2 = Convert.ToInt32(wx + Math.Sin(a) * r1);
lineShape1.Y2 = Convert.ToInt32(wy - Math.Cos(a) * r1);


}

private void timer2_Tick(object sender, EventArgs e)
{
x = lineShape2.X2 - lineShape2.X1;
y = lineShape2.Y2 - lineShape2.Y1;
r2 = Convert.ToInt32(Math.Sqrt(x * x + y * y));
wx2 = lineShape2.X1;
wy2 = lineShape2.Y1;



b += p / 30;
lineShape2.X2 = Convert.ToInt32(wx2 + Math.Sin(b) * r2);
lineShape2.Y2 = Convert.ToInt32(wy2 - Math.Cos(b) * r2);
}
امیدوارم این دستور کمکتون کنه

ممنون از راهنماییت .
سورس همین ساعت یا خط توی دایره رو داری ؟

drawback
دوشنبه 30 اردیبهشت 1392, 15:20 عصر
سورسش کامله فقط یه Lineshape میخوای تا برنامه کامل کار کنه
timer1: رو interval = 1000 بزار و بعدش عقربه ثانیه ای میره جلو