سورس کد و برنامه سی شارپ-1
دهلران پی سی
سایت جامع علمی ,آموزشی,فرهنگی و تفریحی

برنامه زیر برنامه ساعت آنالوگ و عقربه ای است :

 

توجه شود که خود ساعت ، عقربه هایش عکس هستند و  عکس ها Transparent هستند .

برای طراحی عقربه ها چون anchor در #C به صورت Top و Left است ، در هنگام طراحی عکس ها ، عقربه

ها باید به سمت چپ ترین یال عکس بچسبند، یعنی باید در گوشه قرار بگیرند :

عقربه هم به همین شکل بالا در گوشه سمت چپ عکس قرار گرفته اند.

برای پیدا کردن میزان چرخش باید دقت شود.

برای پیدا کردن چرخش دقیقه شمار :

می خواهیم 60 دقیقه را در یک دایره 360 درجه ای قرار دهیم ، پس با تقسیم 360 بر 60 ، خواهیم دانست

که هر دقیقه به 6 درجه چرخش نیاز دارد.

برای پیدا کردن چرخش ثانیه شمار :

این ثانیه شمار باید ، در یک دقیقه 60 بار بچرخد ، کلا باید 360 درجه بچرخد ، پس با تقسیم 360 بر 60

می فهمیم که  ، به ازای یک ثانیه  ، باید  6 درجه بچرخد .

برای پیدا کردن چرخش ساعت شمار :

ساعت شمار که واضح است باید به ازای هر ساعت 30 درجه بچرخد .چون در صفحه 12 ساعت داریم.

پس با تقسیم 360 بر 12 می فهمیم که باید 30 درجه به ازای هر ساعت چرخید. اما ساعت شمار

به صورت آرام آرام با دقیقه شمار تغییر میکند ، مثلا ساعت اگر 8:56 باشد ، ساعت شمار باید خیلی نزدیک

به عدد 9 باشد، پس ما باید ، پارامتری دیگر برای دقیق کردن چرخش ساعت شمار در نظر بگیریم.

ما باید میزان تغییر ساعت شمار را به ازای یک دقیقه نیز بدست بیاوریم و به چرخش اضافه کنیم.

برای اینکار ، می دانیم که 12 ساعت برابر با 720 دقیقه است . 720 دقیقه را میخواهیم در 360 درجه

جای دهیم ، پس با تقسیم 360 بر 720 می دانیم که ساعت شمار به ازای هر دقیقه ، نیم درجه چرخش دارد.

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

پس برای بدست آوردن چرخش ها :

private void timer1_Tick(object sender, EventArgs e)
 {
  theta_second = (int)DateTime.Now.Second * 6;

  theta_minute = (int)DateTime.Now.Minute * 6;

  theta_hour = (int)DateTime.Now.Hour * 30 +
            (int)DateTime.Now.Minute / 2;

  this.Invalidate();
 }

و برای مثال برای چرخش عقربه ثانیه داریم :

int x = center_x;
int y = center_y;
second_hand = Properties.Resources.second_hand;
e.Graphics.TranslateTransform(x, y);
e.Graphics.RotateTransform(theta_second - 180);
e.Graphics.TranslateTransform(-x, -y);
e.Graphics.DrawImage(second_hand, new Point(center_x, center_y));
second_hand.Dispose();

همگان می دانیم که کد بالا ، مرکز دوران را به وسط فرم می آورد و به اندازه تتا میچرخاند و چون در فرم ،

مختصات بر عکس میباشد ، یک flip با کم کردن 180 از theta انجام میدهیم.

نکته : متد this.Invalidate رویداد Paint را فراخوانی میکند.

 

دانلود سورس کد + فایل اجرایی

 


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:








تاریخ: سه شنبه 13 فروردين 1392برچسب:سورس کد,برنامه سی شارپ,
ارسال توسط هادی احمدی

آرشیو مطالب
پيوند هاي روزانه
امکانات جانبی

آمار وب سایت:  

بازدید امروز : 335
بازدید دیروز : 99
بازدید هفته : 437
بازدید ماه : 833
بازدید کل : 204821
تعداد مطالب : 736
تعداد نظرات : 23
تعداد آنلاین : 1

Google

در اين وبلاگ
در كل اينترنت
 <-PostTitle-> <-PostContent-> 1 <-PostLink->