PDA

View Full Version : مبتدی: مشکل در شبه ساز رادار RPM



Collector
دوشنبه 22 مهر 1392, 22:31 عصر
سلام
من یکخط دارم که دور محور ساعت گرد میچرخد
حالا من میخوام RPM(تعداد دور در دقیقه) را از کاربر گرفته و توی تایمر بگم که هر دور با فرض ورودی 5 بایستی
5 دور در یک دقیقه بچزخد

در مورد آپدیت در 1 میلی ثانیه هم راهنمایی بفرمایید


double I = (double)(1/100d);
double Step = (double)((RPM * 60) * I);

rahnema1
دوشنبه 29 مهر 1392, 04:23 صبح
برای رسم رادار حتما باید علاوه بر تایمر از ساعت سیستم هم استفاده بشه
مقدار increment رو کمتر کنید تا با حفظ سرعت حرکت نرم تر بشه


System.Drawing.Pen myPen;
System.Drawing.Graphics formGraphics;
System.Drawing.Point cen;
double z,increment,rpm,linelength;
float x,y;
DateTime dt;
TimeSpan tss;
void Button1Click(object sender, EventArgs e)
{
formGraphics= this.CreateGraphics();
myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
dt=DateTime.Now;
z=Math.PI*2;
cen.X=100;
cen.Y=100;
increment=.05;
rpm=5;
linelength=100;
timer1.Interval=(int)(1000*(60/rpm)/(Math.PI*2/increment));
timer1.Enabled=true;

}

void Timer1Tick(object sender, EventArgs e)
{
formGraphics.Clear(MainForm.DefaultBackColor);
tss=DateTime.Now.Subtract(dt);
z=Math.PI-rpm*Math.PI*2*(tss.Seconds+tss.Milliseconds/1000.0)/60;
x=(float)(Math.Sin(z)*linelength+cen.X);
y=(float)(Math.Cos(z)*linelength+cen.Y);
formGraphics.DrawLine(myPen, cen.X, cen.Y, x, y);
//myPen.Dispose();
//formGraphics.Dispose();
}