可视化程序设计-项目案例2-4-4小球圆周运动
《可视化程序设计》案例2-4
小球圆周运动
图2-3-1 键盘打击小球运动
【例2-2】创建一个C#程序界面,如图2-4-1所示。界面中包含一个转盘背景和4个小球图片(pictureBox)。运行效果:4小球自动绕着红色中心运行。
操作步骤:
(1)启动Microsoft Visual Studio 2008
开始 | 程序 | Microsoft Visual Studio 2008 | Microsoft Visual Studio 2008。
(2)创建Windows 应用程序
菜单 | 文件 | 新建项目 | 其他语言:Visual C# |已安装的模板:Windows 窗体应用程序 |解决方案名称:exm2-1 |
就会出现form1窗体设计器。
(3)在窗体中添加控件
从工具箱添加如下控件到form1窗体设计器,并设置属性:
(4)编写按钮事件驱动程序代码
双击form1面板空白处,输入如下Form1_Load初始化程序
private void Form1_Load(object sender, EventArgs e)
{//在底板上画出转盘
Bitmap img = new Bitmap (panel1.Width, panel1.Height);// 基于底板建立位图对象
Graphics g1 = Graphics .FromImage(img);//取底板panel1作为画图对象
g1.Clear(Color .Transparent); //用透明色初始化底板
g1.FillEllipse(new SolidBrush (Color .Green), 50, 50, 400, 400); //画绿色底盘
g1.FillEllipse(new SolidBrush (Color .White), 60, 60, 380, 380); //画白色底盘 g1.FillEllipse(new SolidBrush (Color .Red), 220, 220, 60, 60); //画红色中心
panel1.BackgroundImage = img;//把所画图像显示在底板上
双击Form1窗体下面的timer1控件, 在自动生成的函数内输入程序,并定义好变量
int TNum = 0; //定时
private void timer1_Tick(object sender, EventArgs e)
{ TNum++;
pictureBox0.Left =200 + (int )(195 *Math .Cos(6 * TNum * 3.14 / 180));//由切换点算
pictureBox0.Top = 200 + (int )(195 *Math .Sin(6 * TNum * 3.14 / 180));//由切换点算
pictureBox1.Left = 200 + (int )(195 * Math .Cos((90+6 * TNum) * 3.14 / 180));//由切换点算 pictureBox1.Top = 200 + (int )(195 * Math .Sin((90+6 * TNum )* 3.14 / 180));//由切换点算
pictureBox2.Left = 200 + (int )(195 *Math .Cos((180 + 6 * TNum )* 3.14 / 180));//由切换点算 pictureBox2.Top = 200 + (int )(195 *Math .Sin((180 + 6 * TNum )* 3.14 / 180));//由切换点算
pictureBox3.Left = 200 + (int )(195 * Math .Cos((270 + 6 * TNum )* 3.14 / 180));//由切换点算 pictureBox3.Top = 200 + (int )(195 * Math .Sin((270 + 6 * TNum) * 3.14 / 180));//由切换点算 }
分别双击【转动】,【停止】单选按钮,输入如下事件驱动程序:
private void Button1_CheckedChanged(object sender, EventArgs e)
{ timer1.Enabled = false ;
}
private void Button2_CheckedChanged(object sender, EventArgs e)
{ timer1.Enabled = true ;
}
(5)编译代码运行程序
菜单 | 调试 | 开始执行 或 启动调试
【总结与思考】 你能解释清楚timer1控件事件响应程序中小球的运动控制方法吗?4个小球初始位置和他们的位置控制语句如何配合?