- 实现效果
- 代码实现
public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// winform的绘制事件 不能写在Load函数里面,否则会显示不出来 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Paint(object sender, PaintEventArgs e) { //画圆 Pen pen = new Pen(Color.MediumAquamarine, 2); SolidBrush brush = new SolidBrush(Color.YellowGreen); Graphics g = this.CreateGraphics(); Rectangle rect = new Rectangle(200, 200, 200, 200); //绘制圆 该圆的圆心为(300,300) Rectangle dot = new Rectangle(295, 295, 10, 10); //绘制圆心 g.DrawEllipse(pen, dot); g.DrawEllipse(pen, rect); //绘制刻度,可以根据实际情况修改刻度的值 for (int i = 0; i < 12; i++) { double angel = i * (Math.PI) / 6; Point xy1 = new Point((int)(100 * Math.Cos(angel) + 300), (int)(100 * Math.Sin(angel) + 300)); // y = 斜边 * sinA x = 斜边 * cosA Point xy2 = new Point((int)(85 * Math.Cos(angel) + 300), (int)(85 * Math.Sin(angel) + 300)); g.DrawLine(pen, xy1, xy2); } } /// <summary> /// 实时更新直线 这里也可以设置Timer,随着时间变化 /// </summary> /// <param name="index"></param> public void UpDateFlash(int index) { Pen pen = new Pen(Color.Red, 2); Graphics g = this.CreateGraphics(); double angel = index * (Math.PI) / 90; Point o = new Point(300, 300); Point M = new Point((int)(300 + 100 * Math.Sin(angel)), (int)(300 - 100 * Math.Cos(angel))); //100为半径 g.DrawLine(pen, o, M); g.Dispose(); } /// <summary> /// 监控TrackBar的变化,只要值发生变化则调用绘画函数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void trackBar1_Scroll(object sender, EventArgs e) { UpDateFlash(trackBar1.Value); if (trackBar1.Value == trackBar1.Maximum | trackBar1.Value == trackBar1.Minimum) { this.Refresh(); } } }