我正在使用WPF使用XAML和C#创建一个小型物理引擎。
我想在表格上绘制矩形,并根据鼠标输入对它们应用基本的物理运动。在程序中,有一个Shape类,它包含重力值,鼠标速度和质量等属性。
我需要将这些属性值应用到矩形图上,因此我从Shape类创建了对象以调用这些属性。但是,我将有多个矩形,所以我需要一个ID矩形的方法,所以我可以将这些重力/速度/质量值应用于每个单独的矩形。我已经找到了办法,Union of two array of two different Objects,除了我不确定这是我要找的。 p>
下面是包含物理值(重力,速度,质量)的类
namespace Shapes
{
public class Shapee
{
int _count;
Physics_Engine.MainWindow _parent;
public Shapee(int clickcount, Physics_Engine.MainWindow parent)
{
_parent = parent;
_count = clickcount;
}
public double Mass { get; set; }
public double Velocity { get; set; }
}
}
在我的主类中,我已经从这个类中创建了一个对象数组,并且还绘制了矩形。
public partial class MainWindow : Window
{
public double boxvalue;
public const int MAXSHAPES = 20;
Shapee[,] shapes = new Shapee[MAXSHAPES, MAXSHAPES];
public int addshapeclickcount = 0;
//Start
private void Button_Click(object sender, RoutedEventArgs e)
{
addshapeclickcount++;
Debug.WriteLine(addshapeclickcount);
if (addshapeclickcount < 20 && addshapeclickcount != 20)
{
//Draw rectangle
var rect = new System.Windows.Shapes.Rectangle()
{
Stroke = new SolidColorBrush(Colors.Black),
Fill = new SolidColorBrush(Colors.Black),
StrokeThickness = 2,
Width = 20,
Height = 20
};
Canvas.SetLeft(rect, 2);
Canvas.SetTop(rect, 6);
Draw.Children.Add(rect);
//Create shape object
var shape = new Shapee(addshapeclickcount, this);
shapes[addshapeclickcount] = shape; //Create new shape every button click
}
else
{
MessageBox.Show(" Max Shapes Reached");
}
}
}
我如何能够将这两个对象链接到一个数组中,以便将Shape质量和速度值分配给每个矩形对象的坐标值?
答案 0 :(得分:1)
你确定这条线是正确的吗?
shapes[addshapeclickcount] =shape; //Create new shape every button click
我认为您可以使用字典链接对象(以保持干净Shappe类):
Dictionary<Shapee, System.Windows.Shapes.Rectangle> links = new Dictionary<Shapee, System.Windows.Shapes.Rectangle>();
每次创建此对象后,您都可以通过以下方式链接:
links.Add(shape, rect);