2014-10-04 66 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?