0
我目前有一個使用monogame的問題,我試圖通過在數據數組本身內設置值來繪製一條線,而不是使用單色繪製API。使用一維數組繪製一條線
我使用Bresenhams line算法的修改版本,這似乎工作,如果我使用spritebatch繪製,但我希望使用數組設置像素顏色。
有被發現的有關座標我monogame陣列的問題IM是1尺寸(寬*高):
var data = new Microsoft.Xna.Framework.Color[width*height];
//my 1 dimensional array
int dx = Math.Abs(point2.x - point1.x);
int dy = Math.Abs(point2.y - point1.y);
int sx = (point1.x < point2.x) ? 1 : -1;
int sy = (point1.y < point2.y) ? 1 : -1;
int err = dx - dy;
for(int i=1;i<data.Length;++i)
{
data[i] = color; // me setting the pixel value
if (point1.x == point2.x && point1.y == point2.x)
{
break;
}
int e2 = 2 * err;
if (e2 > -dy)
{
err = err - dy;
point1.x = point1.x + sx;
}
if (e2 < dx)
{
err = err + dx;
point1.y = point1.y + sy;
}
}
有沒有一種簡單的方法來發現涉及point1.x像素和point1.y我的像素包含在一維數組中的位置。如果我有(5 * 5)或(寬*高)大小的數組(25),同時循環我如何知道當前循環計數器是否表示1D數組內的適當x,y位置?
我已經嘗試將它轉換爲2D array,但我寧願避免不必要的1D和2D數組之間轉換的循環。
'我== Y *寬+ x'什麼檢查呢?取決於如何構建1D陣列。 –
好吧,試了一下,並做到了。如果您將它作爲答案發布,我會接受它。非常感謝! – D3181