PDA

View Full Version : گردش يك label به دور label ديگر



saeid12
پنج شنبه 24 آذر 1390, 02:34 صبح
سلام دوستان
من نياز به قطعه كدي دارم كه يك عكس را دور عكس بعدي بچرخاند.
مثل گردش زمين به دور خورشيد.

private void Form1_Load(object sender, EventArgs e)
{
int x = this.Width / 2 - o1.Width / 2;
int y = this.Height / 2 - o1.Height / 2;
o1.Left = x;
o1.Top = y;

o2.Left = this.Width / 2 - o2.Width / 2;
o2.Top = this.Height / 2 - o2.Height / 2 - 50;
p = 3 * Math.PI / 2;
}

private void timer1_Tick(object sender, EventArgs e)
{
o2.Left = this.Width / 2 - o2.Width / 2 + 100 * Math.Cos(p);
o2.Top = this.Height / 2 - o2.Height / 2 + 50 * Math.Sin(p);
p += 0.0174532925199433;
if (p >= Math.PI * 2)
p = 0;
}
كد بالا حاصل تفكرات من بود! كه به قسمت داخل تايمر ايراد ميگيرد و فكر مي كنم به خاطر دابل بودن عدد است كه من نتوانستم تبديلش كنم.
اگر كد بهتري سراغ داريد خواهش مي كنم مرا راهنمايي كنيد.
ممنون/

linux
پنج شنبه 24 آذر 1390, 12:36 عصر
كسي نميتونه كمكم كنه؟ من نهايتن تا شب فرصت دارم :(

از +gdi استفاده کنید. اگر هدف نمایش یک گرافیک هست.

saeid12
پنج شنبه 24 آذر 1390, 12:42 عصر
از +gdi استفاده کنید. اگر هدف نمایش یک گرافیک هست.

ممنون دوست عزيز بابت راهنمايي ولي من تازه كارم و اصلن نميدونم gdi كه گفتيد چي هست.
من بايد منظومه شمسي را پياده سازي كنم. اما نميتوانم اين گردش را انجام دهم.
بازم ممنون كه لطف كرديد و وقت گذاشتيد.

fan2005
پنج شنبه 24 آذر 1390, 16:40 عصر
http://www.c-sharpcorner.com/UploadFile/mgold/TransformswithGDIplus09142005064919AM/TransformswithGDIplus.aspx

saeid12
پنج شنبه 24 آذر 1390, 21:25 عصر
http://www.c-sharpcorner.com/UploadFile/mgold/TransformswithGDIplus09142005064919AM/TransformswithGDIplus.aspx

من به عنوان يه تازه كار كلي اين پروژه رو زير و رو كردم ( حدود 2 ساعت! ) ولي چيزي سر در نياوردم. من هيچ زمينه اي در اين باره ندارم!
من تلاشم اين بود كه بتونم با رياضي و سينوس و كسينوس اين چرخش رو انجام بدم.
اما به هر حال از شما ممنونم دوست خوبم.

zarrinnegar
پنج شنبه 24 آذر 1390, 22:10 عصر
آخرش هم نگفتی خطایی که میگیره چیه

یه عکش از خطاش بزار یا خطاش رو تایپ کن و بگو رو کدوم خط اون خطا رو میده

saeid12
پنج شنبه 24 آذر 1390, 22:18 عصر
یه عکش از خطاش بزار یا خطاش رو تایپ کن و بگو رو کدوم خط اون خطا رو میده

براتون عكس كد رو گذاشتم تو ضميمه.
ممنون/

zarrinnegar
پنج شنبه 24 آذر 1390, 22:33 عصر
اینو بزار


private void timer1_Tick(object sender, EventArgs e)
{
o2.Left =Convert.ToInt32( this.Width / 2 - o2.Width / 2 + 100 * Math.Cos(p));
o2.Top = Convert.ToInt32( this.Height / 2 - o2.Height / 2 + 50 * Math.Sin(p));
p += 0.0174532925199433;
if (p >= Math.PI * 2)
p = 0;
}

saeid12
پنج شنبه 24 آذر 1390, 23:05 عصر
اینو بزار


private void timer1_Tick(object sender, EventArgs e)
{
o2.Left =Convert.ToInt32( this.Width / 2 - o2.Width / 2 + 100 * Math.Cos(p));
o2.Top = Convert.ToInt32( this.Height / 2 - o2.Height / 2 + 50 * Math.Sin(p));
p += 0.0174532925199433;
if (p >= Math.PI * 2)
p = 0;
}


كار كرد.
متشكرم./