我热衷于创造一个绘图元素是重量超轻。 这样我可以不与该关联过头创造数百万这些对象的System.Windows.Forms.Control
类。
有关类别将从继承System.ComponentModel.Component
类,并有(我猜),只有一个构造函数和一个paint(object sender, PaintEventArgs e)
的方法。 不过,我不知道,该怎么System.Windows.Forms.Control
类执行或有利于实际屏幕上绘图。
我怎么能复制一个有效的绘图上下文油漆/绘图功能,类似于System.Windows.Forms.Control
类?
数以百万计的控制可能是一个内存猪,但重量轻的控制可能。 我想在这种情况下做的是创建执行绘图操作的单一控制(和继承System.Windows.Forms.Control
)和类说MyDrawingObject,保持必要的数据,对于那些那些数百万个对象的每个实例。 然后,绘画班有那些MyDrawingObjects的集合(列表,数组或东西),并会吸引他们的飞行。
假设你的图形对象是具有不同的半径,颜色,位置和重量的球。 我的球类会是这样的:
class Ball
{
public float Radius {get; set;}
public int Color {get; set;}
public float Weight {get; set;}
public Point Position {get; set;}
...
}
现在我的控制会是这样的:
class MyDrawingBoard : System.Windows.Forms.Control
{
List<Ball> MyBalls = new List<Ball>();
override void OnPaint(object sender, PaintEventArgs e)
{
foreach(var b in MyBalls)
{
e.Graphics.DrawEllipse()...
}
}
}
您可以通过绘制只有那些与相交的对象进一步提高性能ClipRectangle
,甚至要管理多个程度List
针对不同类型的对象秒。 这一切都取决于你的需求和应用程序的目标。