我有一个小游戏(用C#编写),我已经建立了一段时间(从vb6 / bitblt开始)我想转换为Silverlight,本质上是为了给我一个很有趣的项目来学习这个平台
我的问题很简单,(游戏是基于平铺的游戏)我需要渲染一些东西。这是如何在Silverlight中执行的,因为事情我有许多精灵和瓷砖表格,我们将每个瓷砖Blt到表面(Picturebox)
Silverlight中的概念是否相同,我们是否需要使用Picturebox作为表面?什么是渲染功能?外部自由人?我看到了WritableBmp函数,可能会让我指出正确的方向让我们开始吗?
==========================
感谢您的回复,以及有关游戏的更多信息。
它是一款单人游戏,基于游戏的角色扮演游戏。我需要将瓷砖,然后字符和对象渲染到瓷砖(或多个瓷砖)上,考虑到这一点,实现这一目标的最佳方法是什么?性能是关键,每个人都讨厌闪烁,抖动的游戏。
话虽如此,是否有人知道任何模拟我们所说的内容的样本?
答案 0 :(得分:2)
您应该使用WriteableBitmap。它专为这种情况而设计。
有关如何使用它的示例,您可以查看我的简单的基于精灵的游戏库SilverTile。使用WriteableBitmap作为其渲染表面并且执行得相当好。
如果你想从头开始编写所有内容,你应该查看WriteableBitmapExtensions项目。它为您提供了扩展方法,简化了WriteableBitmap的使用。
编辑:哦,这提醒我,我需要更新Codeplex上的代码。如果您想要更新版本的代码以及一些示例,请与我联系。
答案 1 :(得分:2)
如果您需要控制屏幕上的每个像素,您可以执行 WriteableBitmap 。您将创建一个包含单行和单个单元格的Grid,将Image元素添加到该单元格,并将Image.Source设置为WriteableBitmap。
如果您不需要控制每个像素,但需要使用绝对坐标定位事物(图像,文本等),请使用画布。
如果您不需要控制绝对坐标,并且只是希望UI在行和列中布置切片,请使用网格或 UniformGrid ,并使用切片每个细胞。
自从你开始使用Silverlight之后要记住一件事,要知道Silverlight(和WPF)中的渲染与VB6,Win32和WinForms世界有很大不同。
在旧世界中,为了绘制东西,你会覆盖一些Paint方法,然后调用API在X,Y处绘制它。
相比之下,在新世界中,您声明性地说,“使用此容器来显示此数据”。非常不同的模式,不同的思维方式。
编辑好的,看到您的更新后,我建议您使用Canvas。您可以使用{X,Y}坐标在画布中定位任何内容。我认为这对基于磁贴的2D游戏很有效。例如,搜索Silverlight磁贴游戏,例如Silverlight Tile Engine。