2014-10-04 50 views
0

我有一個15×15像素的框,我用畫幾個關在不同的顏色:周圍繪製方形精靈一個像素線

spriteBatch.Draw(texture, position, colour); 

我希望做的是畫一個像素線圍繞外部,以不同的顏色,從而使其成爲17×17的盒子,例如,一個像素寬的藍色輪廓和一個灰色中間。

spriteBatch.Draw(texture17by17, position, outlineColour); 
spriteBatch.Draw(texture15by15, position, boxColour); 

我覺得這樣做是繪製兩個箱子,在輪廓顏色一個17×17,一個15×15與框顏色和圖層他們給的外觀輪廓的唯一途徑

顯然位置向量需要修改,但我認爲這給出了一個清晰的想法。

的問題是:有沒有更好的辦法?

回答

0

您可以繪製使用DrawUserIndexedPrimitives線和三角形,看到Drawing 3D Primitives using Lists or Strips MSDN上的更多細節。其他像矩形和圓形的圖形是用線構建的,但是您需要自己實現它們。

要呈現在二維線,只使用正投影從SpriteBatch鏡像變換矩陣。

你可以在PrimitiveBatch類中找到一個更完整的例子,它在XBox Live Indie Games中封裝了示例Primitives中的繪圖邏輯。

+0

感謝這一點 - 它看起來像分層將是什麼,我希望做更多的直線前進兩盒,但是這正是諸如此類的事情,我一直在尋找,謝謝 – user2056166 2014-10-04 13:39:36

1

考慮XNA不能畫「線」等的OpenGL立即模式可以,這是遠更有效繪製儘管預生成的紋理四(2三角形)比來繪製與動態紋理另外幾何形狀特別是當一個單一的「行」每個都需要1個三角形; 2個三角形vs 4恭敬地。前者中的三角形和頂點也較少。

所以我不會嘗試使用額外的幾何圖形來畫一條「薄」線,試圖模仿另一條線的外部線條,而是繼續您正在做的 - 繪製2個不同的子圖(每個子圖都是四元組)

以3D繪製的每個對象都使用三角形繪製。 - Would you like to know more?