2017-03-02 7 views
0

これが重複している場合、多くのお詫び申し上げます。 私はこのようなキャンバスの特定の部分に多くのBitmapImagesを書きます(スニペット)。これは、正常に動作します:私は何をしたいかWriteableBitmap(C#&WPF)のセクションに画像をコピーする方法

TreeFile = "pack://application:,,,/Images/" + TreeFile; 

         var image = new Image 
         { 
          Source = new BitmapImage(new Uri(TreeFile)) 
         }; 
         image.Width = 10; 
         image.Height = 10; 

         Canvas.SetLeft(image, x); 
         Canvas.SetTop(image, y); 
         MainCanvas.Children.Add(image); 

も同時にWriteableBitmap BlankMap;からimageをコピーして、同じ場所(MainCanvasとBlankMapが同じサイズである)にすることです。これは、「元に戻す」を作成することです。次に、ユーザーが新しい合成イメージコピーBlankMapを最終的なBitmapImage WorkingMap;に保存したいと仮定した最後に、完了したWorkingMapをディスクに保存する必要があります。

だから私の質問は以下のとおりです。

  1. はWriteableBitmapsにこのために行くための正しい方法を使用していますか?
  2. imageからBlankMapまではどのように書きますか?私はBlankMapWorkingMapに(ただし#2、#3は、おそらく同じ質問/答えです書くでしょうどのよう

ありがとう!そして、再び、謝罪これは、重複した質問のいくつかのフォームである場合。

+1

WriteableBitmapクラスのドキュメントはどれだけ上がっていますか? https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(v=vs.110).aspxいくつかの問題がありますが、私が答えを出す前に、どのように私は深くなければなりません。 –

+0

私はWriteableBitmapに精通しています。私はWPFでしばらく働いていません。 – zetar

答えて

1

私はマッピングツールの経験に基づいて、WinFormsで理にかなった思考プロセスを適用し、WPFで問題を引き起こすのではないかと懸念しています。フレームワークの深い深いバグ。

質問#1

"元に戻す"機能は正しい方法ですか? WPFでは、要素の追加、移動、および削除を非常に簡単に行うことができます。

私は、コマンドを使って変更を実装し、元に戻すときにスタックからコマンドを取り消すことが想定されていたと思います。しかし、私はまだこの例を意味のある方法で見ていません。

質問#2

既存ImageSourceWriteableBitmapを初期化し、あなたは、単にコンストラクタに渡すことで、それを初期化します。その後

var BlankMap = new WriteableBitmap(image); 

、あなたは、コード例をたどりますclass documentationに記載されています。

質問#3

あなたはプロセスを逆でしょう。


結論は、何らかのグラフィカルな編集をしたいと思うように聞こえるということです。ビットマップはWinFormsでもうまく機能するので、WPFでもうまく動作すると信じるのは簡単です。彼らはしない。ビットマップの使用を制限して表示すると、メモリリークなどを処理する時間が大幅に短縮されます。

関連する問題