簡體   English   中英

在C#中使用“物理對象”制作2D地圖

[英]Making a 2D map with “physical objects” in C#

我想使用坐標和xml在C#中使用物理對象制作2D地圖。 Xml將被解析,然后將其中的內容以Form的形式“映射”到矩形上。

例如:

<chair>
  <x>12</x>
  <y>20</y>
</chair>

將在(12,20)中將椅子的圖像放在窗體上的矩形中。

我的XML方法是否還理智? 我想使用或不使用XML來實現它,我只是沒有其他任何好主意。

換句話說:在我的表單上,我有一個區域,我們稱其為“房間”。 我解析XML,發現椅子應該在這個房間的(12,20)上。 如何在我的“房間”的那個位置放置椅子的圖像? 我希望能夠為房間中的這些對象制作2D地圖。

如何在C#Windows窗體中執行此類操作?

似乎您在這里擁有的可能屬於相當普遍的CAD / CAM軟件設計模式。 在AutoCAD中,這是“ 阻止/插入 ”模式:

在此處輸入圖片說明

在Revit中,它是“ 系列 / 實例 ”模式。 在Pro / ENGINEER中,它類似於“ 模型/裝配體零部件 ”。 基本思想是用戶可以插入(a / k /實例化a / k / a匯編)某些外部設計對象,該對象在其自己的設計空間中定義(可能在同一文件或不同文件中),並帶有一些指定的從外部空間到頂層設計空間的轉換。 然后,該對象出現在頂層設計空間中,但未復制-已鏈接。 外部對象的更改將通過該對象的所有插入反映出來。

(我不知道軟件設計模式社區是否為此模式指定了標准名稱。盡管如此,它在整個CAD中都很常見。)

因此,由於您遵循的是通用模式,所以我認為您處於合理的軌道上。 您的XML實體對應於一系列的塊插入,將標准庫對象添加到用戶Form的頂層設計空間中。

我建議對您的設計進行一次更改。 當前的XML設計針對每種可以插入的標准對象類型都有一個單獨的類,即:

<chair>
    <!-- Placement information  -->
</chair>
<table>
    <!-- Placement information  -->
</table>

我可能建議定義一個通用插入實體,例如:

<insert DefinitionObject="some-unique-identifier">
    <!-- Placement information  -->
</insert>

這將使您可以輕松添加要插入的新類型的標准對象,而無需定義很多新的插入類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM