c#小球反弹。在窗口中加一个矩形,小球在矩形内运动
时间: 2024-02-13 22:01:34 浏览: 25
好的,以下是一个使用 C# 和 WinForms 实现的示例代码,可以在 Visual Studio 中创建一个 Windows 窗体应用程序项目,将代码复制粘贴到 Form1.cs 中:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
// 矩形位置和大小
private int rectX = 200, rectY = 150, rectWidth = 240, rectHeight = 180;
// 小球半径和速度
private int ballRadius = 10, ballSpeedX = 5, ballSpeedY = 5;
// 小球位置
private int ballX, ballY;
// 随机数生成器
private Random random = new Random();
public Form1()
{
InitializeComponent();
// 窗口尺寸
this.ClientSize = new Size(640, 480);
// 初始化小球位置
ballX = random.Next(rectX + ballRadius, rectX + rectWidth - ballRadius);
ballY = random.Next(rectY + ballRadius, rectY + rectHeight - ballRadius);
// 定时器每秒钟更新 60 次
Timer timer = new Timer();
timer.Interval = 1000 / 60;
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
// 移动小球
ballX += ballSpeedX;
ballY += ballSpeedY;
// 检测小球是否碰到矩形边缘
if (ballX - ballRadius < rectX || ballX + ballRadius > rectX + rectWidth)
{
ballSpeedX = -ballSpeedX;
}
if (ballY - ballRadius < rectY || ballY + ballRadius > rectY + rectHeight)
{
ballSpeedY = -ballSpeedY;
}
// 重绘窗口
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
// 填充窗口背景色
g.Clear(Color.White);
// 绘制矩形和小球
g.DrawRectangle(Pens.Black, rectX, rectY, rectWidth, rectHeight);
g.FillEllipse(Brushes.Red, ballX - ballRadius, ballY - ballRadius, ballRadius * 2, ballRadius * 2);
}
}
```
这段代码创建了一个大小为 640x480 的窗口,内部有一个矩形和一个小球。小球在矩形内随机运动,碰到边缘时会反弹。每秒钟更新窗口 60 次,控制帧率为 60 帧。你可以根据需要修改代码中的参数和细节。