
求一段画钟表指针的代码,C#语言
求一段C#代码,画出钟表时针的轨迹也就是说隔一个小时走一个格那种,隔多长时间什么的好弄了,就是画点的代码不大熟...
求一段C#代码,画出钟表时针的轨迹也就是说隔一个小时走一个格那种,隔多长时间什么的好弄了,就是画点的代码不大熟
展开
展开全部
g = e.Graphics;
//绘图模式默认为粗糙模式,将会出现锯齿!
g.SmoothingMode = SmoothingMode.AntiAlias;
g.SmoothingMode = SmoothingMode.HighQuality;
g.TranslateTransform(w / 2, h / 2);//重新设置坐标原点
//获得系统时间值
int second = DateTime.Now.Second;
int minute = DateTime.Now.Minute;
int hour = DateTime.Now.Hour;
/*------------------------------------------------------------------------------------
每秒偏移度,秒针偏移=当前秒*6
每分偏移读,分针偏移= 当前分*6+当前秒*(/60)
每小时偏移读,时针偏移= 当前时*30+当前分*(/60)+当前秒*(/60/60)
--------------------------------------------------------------------------------------*/
//绘秒针
pen = new Pen(Color.FromArgb(121, 151, 188), 1);
pen.EndCap = LineCap.RoundAnchor;
g.RotateTransform(6 * second);
float y = (float)((-1) * (h / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
////绘分针
pen = new Pen(Color.FromArgb(147, 162, 180), 4);
pen.EndCap = LineCap.Round;
g.RotateTransform(-6 * second); //恢复系统偏移量,再计算下次偏移
g.RotateTransform((float)(second * 0.1 + minute * 6));
y = (float)((-1) * ((h - 20) / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
////绘时针
pen = new Pen(Color.FromArgb(90, 94, 96), 6);
pen.EndCap = LineCap.Round;
g.RotateTransform((float)(-second * 0.1 - minute * 6));//恢复系统偏移量,再计算下次偏移
g.RotateTransform((float)(second * 0.01 + minute * 0.1 + hour * 30));
y = (float)((-1) * ((h - 35) / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
//绘图模式默认为粗糙模式,将会出现锯齿!
g.SmoothingMode = SmoothingMode.AntiAlias;
g.SmoothingMode = SmoothingMode.HighQuality;
g.TranslateTransform(w / 2, h / 2);//重新设置坐标原点
//获得系统时间值
int second = DateTime.Now.Second;
int minute = DateTime.Now.Minute;
int hour = DateTime.Now.Hour;
/*------------------------------------------------------------------------------------
每秒偏移度,秒针偏移=当前秒*6
每分偏移读,分针偏移= 当前分*6+当前秒*(/60)
每小时偏移读,时针偏移= 当前时*30+当前分*(/60)+当前秒*(/60/60)
--------------------------------------------------------------------------------------*/
//绘秒针
pen = new Pen(Color.FromArgb(121, 151, 188), 1);
pen.EndCap = LineCap.RoundAnchor;
g.RotateTransform(6 * second);
float y = (float)((-1) * (h / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
////绘分针
pen = new Pen(Color.FromArgb(147, 162, 180), 4);
pen.EndCap = LineCap.Round;
g.RotateTransform(-6 * second); //恢复系统偏移量,再计算下次偏移
g.RotateTransform((float)(second * 0.1 + minute * 6));
y = (float)((-1) * ((h - 20) / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
////绘时针
pen = new Pen(Color.FromArgb(90, 94, 96), 6);
pen.EndCap = LineCap.Round;
g.RotateTransform((float)(-second * 0.1 - minute * 6));//恢复系统偏移量,再计算下次偏移
g.RotateTransform((float)(second * 0.01 + minute * 0.1 + hour * 30));
y = (float)((-1) * ((h - 35) / 2.75));
g.DrawLine(pen, new PointF(0, 0), new PointF((float)0, y));
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private void Form1_Paint(object sender, PaintEventArgs e)
{
int bj = 100; // 半径
Point p = new Point(120, 120); // 圆心位置
// 绘制 12 个时间点
for (int i = 0; i < 360; i+=30)
{
int y = (int)(Math.Sin(i * Math.PI / 180) * bj) + p.Y;
int x = (int)(-Math.Cos(i * Math.PI / 180) * bj) + p.X;
e.Graphics.DrawLine(SystemPens.ControlText, new Point(x , y), new Point(x, y+1));
}
}
这是算出 12 小时各点的方法
用相同的方法可以把时针的角度变成针尖的坐标就行了
{
int bj = 100; // 半径
Point p = new Point(120, 120); // 圆心位置
// 绘制 12 个时间点
for (int i = 0; i < 360; i+=30)
{
int y = (int)(Math.Sin(i * Math.PI / 180) * bj) + p.Y;
int x = (int)(-Math.Cos(i * Math.PI / 180) * bj) + p.X;
e.Graphics.DrawLine(SystemPens.ControlText, new Point(x , y), new Point(x, y+1));
}
}
这是算出 12 小时各点的方法
用相同的方法可以把时针的角度变成针尖的坐标就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询