必須由具有數據的像素(大)繪製。我怎樣才能做到這一點?如何以像素爲單位在WPF中繪製
我嘗試了一個畫布和矩形 - 電腦掛上了自己... 試過下面的選項(DrawingContext) - 電腦仍然掛着自己,但少一點。
請推薦計算機負載最少的選項。 int width = 800; - 數組的大小(大!) int size = 1; - 希望能夠使片段不僅僅是一個而是幾個像素
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
Random rnd = new Random();
int width = 800;
int size = 1;
CellType[,] types = new CellType[width, width];
for (int i = 0; i < width; i++)
{
for (int j = 0; j < width; j++)
{
int r = rnd.Next(0, 100);
if (r >= 70) types[j,i] = CellType.IsOccupied;
else types[j, i] = CellType.IsEmpty;
}
}
for (int i = 0; i < width; i++)
{
for (int j = 0; j < width; j++)
{
Brush brush = Brushes.Black;
switch (types[j, i])
{
case CellType.IsEmpty: brush = Brushes.Green;
break;
case CellType.IsOccupied: brush = Brushes.Black;
break;
}
drawingContext.DrawRectangle(brush,
new Pen(brush, 1),
new Rect(j * size, i * size, size, size));
}
}
base.OnRender(drawingContext);
}
首先,移動筆退出循環;每筆可以使用一支筆。 __凍結每支筆___。我也強烈建議你看'InteropBitmap'並手動設置字節。 – 2013-04-09 08:58:54
查看[WriteableBitmap](http://msdn.microsoft.com/zh-cn/library/system.windows.media.imaging.writeablebitmap.aspx)並將其用於直接繪製。您也可以使用Direct2D(僅適用於Vista及以上版本)或使用Direct3D。 – dowhilefor 2013-04-09 09:11:50