如何创建对象并在移动时对其进行绘制?

时间:2011-01-26 18:22:39

标签: c# winforms draw paint

我想创建一个圆形对象,以速度将其放在屏幕上,然后让它在边框内反弹。我可以很好地设置圆形类,但是如何绘制对象(以及后面的多个对象,说点击并获得更多圆形对象)并显示其运动?

2 个答案:

答案 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())将形状放在屏幕上。您需要阅读PenBrushColor个对象;它们允许您定义圆的边框,填充和颜色。我将绘图逻辑放在控件的OnPaint()方法中,只要窗口被告知重绘自己就会调用它。要让对象定期移动,请设置一个Timer并定期间隔,并使用将执行移动逻辑的处理程序订阅其Tick事件。完成每次移动后,在控件上调用Invalidate(),你有图形句柄;这将导致控件重绘自己。我会避免获取整个表单的图形句柄,或者放置其他嵌套控件的任何控件,因为重新绘制自身的控件也会告诉所有嵌套控件重绘自己。在表单窗口中占用跨度的PanelPictureBox是自定义图形的首选方法。您也可以考虑使用BufferedGraphicsContext对象实现双缓冲图形,或者在Bitmap上绘制自定义形状,然后将其设置为PictureBox的图像。 / p>