2017-03-16 17 views
1

私はWPFキャンバスを持っています。そして私は、異なる色で最大50万画素を描く必要があります。私はピクセルごとに描画しようとしましたが、それは非常に遅かったです。だから私はImageを作り、それを描くことに決めました。私はそれが最善の方法であるかどうかわからないので、あなたがより良い方法を知っているなら、教えてください。WPF - キャンバスに画像を作成して描画する

私の質問は、どのようにしてキャンバスにイメージを作成して描画できますか?私は検索しましたが、何も見つかりませんでした。

私は2次元の色の配列を持っており、おそらくイメージを使って描画する必要があります。どのようにすればいいですか?

おかげで、Soptik

EDIT:今、私はこのコードを使用しますが、それも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

あなたは(私たちは本当にいくつかのコードを参照する必要があります)あなたが今持っているかもしれないものをコードフォローしたい場合は、一度に1つのピクセル以上のものを描くようにしてください。 – Rinktacular

+0

私はこの試みた:(I = 0 int型私は++; iがW <)ため ' のため { (INT J = 0であり、j SoptikHa

+0

あなたの質問テキストにそれを追加してみてください: – Rinktacular

答えて

1

は "悪い" ではありません。 2dアレイの大規模なサイズのために遅いかもしれませんが、このプロセスでは2つのループ(for loops)をループするのが普通です。いくつかの潜在的な解決策は、rectとして各行をCanvasにロードして、処理中のイメージを表示することができますが、ピクセルデータを処理し、複数の処理を時間どおりに処理する方法を調べる必要はありません。

This Question is similar to yours and might help

関連する問題