2017-03-16 49 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