silverlight 如何利用坐标点进行高效的绘图显示?
通过数据库得到一系列的坐标点(x,y),数据量很大,可能有上万条或者更多数据。
请问在silverlight下用什么方式可以把这些点都绘制出来并且效率是最高的。
我知道可以生成一系列的控件对象来完成绘制,不过上万个对象似乎太庞大了,会卡死吧。
[解决办法]
可在服务器实现缓存策略,如访问相同的数据,之前生成过了,就不再生成,直接返回之前的图像即可
[解决办法]
WriteableBitmap wb = new WriteableBitmap(100, 100); for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { if (j >= 0 && j < 10) SetPixel(wb, i, j, 255, 255, 0, 255); else if (j >= 10 && j < 20) SetPixel(wb, i, j, 255, 0, 255, 255); else if (j >= 20 && j < 30) SetPixel(wb, i, j, 255, 255, 255, 0); else if (j >= 30 && j < 40) SetPixel(wb, i, j, 255, 0, 0, 255); else if (j >= 40 && j < 50) SetPixel(wb, i, j, 255, 0, 255, 0); else if (j >= 50 && j < 60) SetPixel(wb, i, j, 255, 255, 0, 0); else if (j >= 60 && j < 70) SetPixel(wb, i, j, 255, 128, 0, 255); else if (j >= 70 && j < 80) SetPixel(wb, i, j, 255, 0, 255, 128); else if (j >= 80 && j < 90) SetPixel(wb, i, j, 255, 255, 128, 0); else SetPixel(wb, i, j, 255, 255, 128,128); } } img = new Image(); img.Source = wb; img.HorizontalAlignment = HorizontalAlignment.Left; this.LayoutRoot.Children.Add(img); void SetPixel(WriteableBitmap bm, int row, int col, byte alpha, byte r, byte g, byte b) { int idx = row * bm.PixelWidth + col; byte r1 = (byte)(r * (alpha / 255d)); byte g1 = (byte)(g * (alpha / 255d)); byte b1 = (byte)(b * (alpha / 255d)); bm.Pixels[idx] = (alpha << 24) | (r1 << 16) | (g1 << 8) | b1; }