none
DrawingGroupの使い方について RRS feed

  • 質問

  •  リストボックスの「半透明の target 画像」を DrawingGroup に変換して、そのDrawingGroup に addTaget 画像を追加することにより画像を作成しようとしました。しかし、目的の画像は作成できずに、target 画像だけが表示されました。DrawingGroupの設定は下記の記述で正しいでしょうか。

                    Image target = (Image)ImageslistBox1.Items[0];

                    Image addTarget = (Image)ImageslistBox1.Items[1];

                //ImageからDrawingGroupに変換

                ImageDrawing ImgDrawing = new ImageDrawing();
                ImgDrawing.ImageSource = target.Source;

                DrawingGroup drawingGroup = new DrawingGroup();
                drawingGroup.Children.Add(ImgDrawing);

                // DrawingGroupにaddTagetを追加

                ImageDrawing bigKiwi = new ImageDrawing();
                bigKiwi.Rect = new Rect(0, 0, addTarget.Width, addTarget.Height); 

                bigKiwi.ImageSource = addTarget.Source;

                drawingGroup.Children.Add(bigKiwi);

                //DrawingGroupからImageに変換

                DrawingImage drawingImageSource = new DrawingImage(drawingGroup);

                drawingImageSource.Freeze();

                Image targetImage = new Image();
                targetImage.Source = drawingImageSource;

                // 選択アイテムにImageを設定

                ImageslistBox1.SelectedItem = targetImage;

    • 編集済み タッカ 2010年7月3日 6:51 targetImageの誤表記のため
    2010年7月2日 15:17

回答

  • そう言えばこの作成した targetImage、ちゃんと ImageslistBox1.Items とかに追加してますか? SelectedItem に設定するだけじゃ意味ないですけど。
    • 回答としてマーク タッカ 2010年7月3日 7:50
    2010年7月3日 7:30

すべての返信

    • ImgDrawing の Rect が未設定ですが。
    • addTarget の Width/Height は大丈夫ですよね?(明示的に設定してますよね?)
    2010年7月3日 6:25
  • とりあえず、ImgDrawing の Rect を設定してみました。

                    ImageDrawing ImgDrawing = new ImageDrawing();
                    ImgDrawing.Rect = new Rect(0, 0, addTarget.Width, addTarget.Height);
                    ImgDrawing.ImageSource = target.Source;
                    DrawingGroup drawingGroup = new DrawingGroup();
                    drawingGroup.Children.Add(ImgDrawing);

    addTarget の Width/Height はリストボックスに追加するときに42×42のサイズで追加しています。ImgDrawing.Rect の次の行の ImgDrawing.ImageSource にブレークポイントを置いて値の参照をすると42×42のサイズを確認できました。したがって、addTarget の Width/Height は明示的に設定できています。

     それでも、target 画像だけが表示されます。 それから、drawingGroup の Children の Count は2を確認しています。

    2010年7月3日 7:07
  • そう言えばこの作成した targetImage、ちゃんと ImageslistBox1.Items とかに追加してますか? SelectedItem に設定するだけじゃ意味ないですけど。
    • 回答としてマーク タッカ 2010年7月3日 7:50
    2010年7月3日 7:30
  •                 //ImageslistBox1.SelectedItem = drawingImageSource;

                    // ImageslistBox1に新たなImageを設定
                    ImageslistBox1.Items.Add(targetImage);

    解決策がわかりました。Hongliangさんありがとうございます。

    2010年7月3日 7:51
  •  目的の画像を作成できました。これで画像編集の機能を実装できそうです。

     本当にありがとうございます。

    2010年7月3日 14:06