【发布时间】:2010-10-25 05:56:18
【问题描述】:
我正在尝试在 WPF C# 中构建一个简单的图形应用程序。目的是绘制 10000*10000 个大小为 4 像素的矩形。
我已经修改了画布的 OnRender 方法来绘制矩形。绘图是针对较少数量的矩形(例如 50*50 或 100*100 矩形,每个 4 像素)执行的,但随着我增加数量而减慢。的矩形。
以下是我的代码:
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
FillCells(dc);
if (_ShowGrids)
{
DrawGrid(dc); // draw grid lines
}
}
void FillCells(DrawingContext dc)
{
int cellSize=4;
for (int i = 0; i < MaxRow; i++)
{
for (int j = 0; j < MaxColumn; j++)
{
dc.DrawRectangle(GetRectBrush(i,j), GetRectPen(i,j), new Rect(j * cellSize , i * cellSize , cellSize - 1, cellSize - 1));
}
}
}
以上代码绘制1000*1000个矩形需要一分钟多。
有什么方法可以加快这个过程吗?我可以用其他东西代替吗?
谢谢。
【问题讨论】:
-
你考虑过使用visualBrush吗?
-
不,我没有。你能给我一些视觉刷的例子吗?
-
您是否将每个矩形的颜色存储在内存中?如果没有,GetRectBrush(i,j) 在做什么?
-
是的,有一个二维颜色矩阵,用于存储特定坐标的矩形颜色。操纵颜色矩阵以绘制所需颜色的矩形。 GetRectBrush 返回该坐标矩形的solidcolorbrush。
-
加载二维矩阵时...颜色设置占用多少内存?那是很多元素的地狱