C# 想要直观地表示原始信息吗

C# 想要直观地表示原始信息吗,c#,C#,我的任务是以分片的形式表示数据。以下是一个示例数据: WWWWWWWWWWWWWWWWWDWWWWW WCCCCCCCCCCCCCCCGGGGGGW DCCCCCCCCCCCCCCSSdGGGGW WCCCCCCCCCCCCCCSSSdddGW WWWWWWWWWWWWWWWWWDWWWWW WCCCCCCCCCCWCCCCCCCCCCW WCCCCCCCCCCWCCCCCCCCCCW DCCCCCCCCCCWCCCCCCCCCCW WCCCCCCCCCCWCCCCCCCCCCW WWWWWWW

我的任务是以分片的形式表示数据。以下是一个示例数据:

WWWWWWWWWWWWWWWWWDWWWWW
WCCCCCCCCCCCCCCCGGGGGGW
DCCCCCCCCCCCCCCSSdGGGGW
WCCCCCCCCCCCCCCSSSdddGW
WWWWWWWWWWWWWWWWWDWWWWW
WCCCCCCCCCCWCCCCCCCCCCW
WCCCCCCCCCCWCCCCCCCCCCW
DCCCCCCCCCCWCCCCCCCCCCW
WCCCCCCCCCCWCCCCCCCCCCW
WWWWWWWWWWWWWWWWWWWWWWW
图例:

  • W=墙
  • D=门
  • C=地毯
  • S=沙
  • d=污垢
  • G=草
我试图在应用程序中表示这一点。如果我将这些数据网格化,比如300x300,然后决定一个代表对象的固定大小,那么生成的地图将是巨大的,需要大量的滚动

抛开后期绘制对象块的要求不谈,我主要尝试在每个对象上获得平滑的快速滚动和基本编辑。我是一名WinForm开发人员,不知道在WinForm中这样做是否是一个好主意。想到WPF,它更像是一个自由漫游应用程序,而不是僵化的WinForms


请给我任何建议。

哈桑,对于80年代的造型,你可能想看看等距投影。它可以很好地处理二维映射信息

基本上,可以按照人造等轴测透视栅格定义图形内容,其中的内容可能表示地板砖,例如:

然后,您可以将数据映射解析为曲面分幅,曲面分幅甚至可以表示结构(在您的示例中是墙):

这是一个完全实现的等轴测(2.5D)房间投影示例:


(来源:)

您可能希望使用等轴测引擎来帮助您进行数据可视化(有很多),或者构建自己的引擎。一些资源如下:

  • 您可以找到将引入等轴测操作的
  • ice2d游戏引擎
  • 堆垛溢流柱:

面板、双缓冲、OnPaint、ONCLICK是的,正在尝试。。。如果网格超过100x100,则挂起。查看SDL。我更倾向于使用像OpenTK这样的东西来表示这样的东西。Offtopic-因为你的评论,我刚刚检查了OpenTK,@Magus。看起来很有趣!虽然这可能有点过分,但它看起来确实不错,我一直都是这种风格的粉丝。他的数据可能太简单,无法处理方向分量,在这种情况下,他可能只需要做常规的方形平铺。数据简单+没有
y
轴。我喜欢这个。偶尔会有一部分在门下有地毯,实际上,在该表示上也没有额外的轴,@Hassanglzar-它看起来是这样的,因为瓷砖本身可能有一个与之相关的“高度”参数(例如,地板:0px高,墙壁:100px高)。地毯门可能有不同的符号(比如,[P]);你只需要对它进行适当的解释和渲染。你是对的,@Magus,但我必须承认,我选择了那个样本图像,因为它是一种非常简洁的方式来表示2.5D概念另一种可能性是分层概念。特别是在一个受限于网格的游戏中,您可能会有一个布尔路径地图来确定哪些对象是可通行的。对于上面这样一个更复杂的示例,您可能会选择三层方法,包括路径层、地形层和对象层,这将使门的打开/关闭状态更容易。然而,归根结底,这是一个确定目标的问题。