2017-03-16 48 views
1

我有WPF画布。我需要绘制不同颜色的五百万像素。我试图逐个像素绘制,但速度非常慢。所以我决定创建Image并绘制它。我不知道,如果这是最好的方法,那么如果你知道更好的方法,告诉我。WPF - 在画布上创建并绘制图像

所以我的问题是,我如何创建和绘制图像到画布?我搜索了,但我无法找到任何东西。

我有颜色的二维数组,我需要绘制它们,可能通过图像,所以我该怎么做?

感谢,Soptik

编辑:现在,我用这个代码,但它需要几秒钟画甚至是100 * 100像素。

for(int i = 0; i < w; i++) 
{ 
    for(int j = 0; j < h; j++) 
    { 
     Draw(i, j, Brushes.Aqua); 
    } 

...

private void Draw(int x, int y, SolidColorBrush b) 
    { 
     Line l = new Line(); 
     l.Stroke = b; 
     l.X1 = x; 
     l.Y1 = y; 
     l.X2 = x + 1; 
     l.Y2 = y + 1; 
     l.StrokeThickness = 1; 
     canvas.Children.Add(l); 
    } 
+0

如果你想追随你可能有什么样的代码现在(我们真的需要看到一些代码),你应该尝试一次绘制多个像素。 – Rinktacular

+0

我试图这样: ' 的for(int i = 0; I <瓦特;我++) { 对(INT J = 0;Ĵ<1H; J ++) { 绘图(I,J,笔刷.Aqua); } } '其中w是宽度,h是高度,我只是试图绘制线条(我无法找到,如何绘制更好,所以我画线),它需要几秒钟来绘制它。 – SoptikHa

+0

尝试将其添加到您的问题文本中,使其更容易阅读:) – Rinktacular

回答

1

使用当前的方法是不是 “坏”。由于您拥有的二维数组的大小可能会很慢,但在这个过程中循环两个for loops是正常的。一些潜在的解决方案可能会将rect的每一行加载到您的Canvas上以显示正在处理的图像,但是如果没有必要,我将研究如何处理像素数据并可能在一次处理多个像素数据。

This Question is similar to yours and might help