我想创建一个圆形对象,以速度将其放在屏幕上,然后让它在边框内反弹。我可以很好地设置圆形类,但是如何绘制对象(以及后面的多个对象,说点击并获得更多圆形对象)并显示其运动?
答案 0 :(得分:3)
首先在Form上覆盖OnPaint方法并在那里添加绘制逻辑
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawEllipse(new Pen(Color.Red), 0, 0, 100, 100);
}
答案 1 :(得分:2)
可以在.NET(WFA,WPF和XNA框架)中以至少3种不同的方式完成绘图。对于这个答案,我假设您使用的是最简单的:WinForms应用程序。
使用Graphics
类完成在.NET中绘制/绘制自定义形状。所有表单控件都有一个CreateGraphics()
方法,它可以为您提供屏幕上“框”的引用,其中包含您调用该方法的控件的大小和位置。使用该Graphics
实例,您可以调用各种Draw方法(如DrawCircle()
)将形状放在屏幕上。您需要阅读Pen
,Brush
和Color
个对象;它们允许您定义圆的边框,填充和颜色。我将绘图逻辑放在控件的OnPaint()
方法中,只要窗口被告知重绘自己就会调用它。要让对象定期移动,请设置一个Timer
并定期间隔,并使用将执行移动逻辑的处理程序订阅其Tick
事件。完成每次移动后,在控件上调用Invalidate()
,你有图形句柄;这将导致控件重绘自己。我会避免获取整个表单的图形句柄,或者放置其他嵌套控件的任何控件,因为重新绘制自身的控件也会告诉所有嵌套控件重绘自己。在表单窗口中占用跨度的Panel
或PictureBox
是自定义图形的首选方法。您也可以考虑使用BufferedGraphicsContext
对象实现双缓冲图形,或者在Bitmap
上绘制自定义形状,然后将其设置为PictureBox
的图像。 / p>