我正在为silverlight中的一个游戏设计一个扫雷舰的布局。目前,我在Canvas
控件上使用了square
用户控件。有分配给它的属性。我还想在以后的阶段添加一个功能。它是关于使用bezier曲线进行曲线绘制,并使用x,y坐标在曲线上绘制这些正方形,而不是循环通过。然后我想在XML文件中发送正方形的x,y位置。
我的问题是,我应该使用什么样的方式,才能在最小的内存消耗、快速高效的性能以及易于实现的条件下实现最佳的优化组合。如果您的专家有任何其他想法,请告诉我。提前谢谢。!
发布于 2012-07-02 06:46:42
这些天来,我自己整理出了答案。我继续使用我的Square
用户控件,并在布局中使用它。
关于x/y位置的绘制,我使用了以下命令:
Point point = myElement.TransformToVisual(App.Current.RootVisual as FrameworkElement)).Transform(new Point(0, 0));
保存XML文件时出现故障,因为silverlight 4没有为浏览器内应用程序提供提升的权限。但随后我在保存按钮单击事件中使用了以下代码:
SaveFileDialog dlgSave = new SaveFileDialog();
dlgSave.DefaultExt = "xml";
dlgSave.Filter = "XML Files (XML)|*.xml;";
dlgSave.FilterIndex = 1;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + myXML.ToString();//myXML is the XDocument I created globally and saved data in it
try
{
bool check = (bool)dlgSave.ShowDialog();
if (check)
{
using (Stream stream = dlgSave.OpenFile())
{
StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.UTF8);
sw.Write(strXML);
sw.Close();
stream.Close();
}
MessageBox.Show("XML Saved successfully");
}
catch (SecurityException)
{
MessageBox.Show("There seems to be an issue with saving XML file on the disk, please try again...", "Something's not right", MessageBoxButton.OK);
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Saving here requires authorised permissions", "Access Denied", MessageBoxButton.OK);
}
发布于 2012-05-25 15:47:46
如果你能把所有东西都画成形状和图像(比如矢量图形),你就能利用图形元素的硬件加速。此外,如果你不定义你的正方形为UserControls,你会获得更好的性能,你应该在代码中动态地创建它们作为包含其他形状的形状,然后有一个对象模型,该对象模型根据它们的位置链接到这些形状(例如,字典正方形;字典squareElements)。
在内存消耗和文件访问方面,您应该将正方形在内存中的x,y位置保留为Point结构,并仅在需要时(即当玩家离开游戏时)才序列化到文件(XML可以)。
https://stackoverflow.com/questions/10752673
复制