2011-07-18 13 views
0

私はお互いの上に画像を表示する必要があります。これは、合成された\階層化された画像でも、個別の画像でもよい。これは通常、大きな画像になり、上に小さな画像が表示されます。複合レイヤ化手法では、より小さい画像はそれぞれ別々の(アクセス可能な)レイヤである必要があります。別々の画像のアプローチでは、小さな画像が透明な背景で一番上に表示されます。どちらの方法でも、より小さい画像はアクセス可能でなければならず、すなわち移動(ドラッグ)または削除が可能でなければならない。アプリケーションは、これらの画像を一緒に(同じ画像のように)表示し、小さな画像の座標(位置)を追跡する必要があります。C#(フォームまたはWPF)を使用して画像を重ね合わせる方法は?

現在の(概念実証)ソリューションには、大きな画像とツリービューを表示するPictureBoxコントロールがあります。ノードはツリービューからピクチャボックスにドラッグされ、グラフィックスのDrawStringメソッドまたはDrawImageメソッドを使用してレンダリングされます。これらのメソッドは、より小さなイメージを描画します。問題は、小さな画像が描画されると別のグラフィックスオブジェクトとして戻すことができないということです。画像ボックスは、画像を現在の画像の一部として「見る」。

私はこれをC#(WinFormsまたはWPF)で行う必要があります。画像タイプは一般的でオープンな形式でなければなりません。つまり、プロプライエタリではありません。好ましくは第三者のコントロールはありません。

提案は何ですか?

答えて

0

WPFはこのプロジェクトで私が選んだ技術です。

    実装の画像操作

一般的な考えのための方法よりスムーズ

  • ドラッグ&ドロップ& 方法ちらつきのない、よりよい、より良いコンセプトHW上で直接レンダリング
  • 、:

    • MVVMパターン
    • あなたのlaを保持しているViewModel yer情報
    • ItemsControl小さなオーバーレイのコレクションにバインドThumb(ドラッグの場合は&ドロップ機能)に基づいてカスタムUserControlをイメージ化するDataTemplateを保持しているイメージは、上に小さなイメージを表示します。

    それぞれの小さな画像を別々にドラッグ、編集、隠す機能を追加するのは簡単です。

  • +0

    コードの例を挙げてこれを行う方法を教えてください。 – Tak

    0

    小さな画像が描画されると、別のグラフィックスオブジェクトとして を返すことができないという問題があります。画像ボックスは、それを現在の画像の一部として と "見なす"。

    この動作は完全に正常です。 GDI図面はオブジェクトでは機能しません。あなたが求めていることをするには、最終的なイメージに変化を引き起こす可能性のあるイベントを追跡する必要があります。そのようなイベントが発生した場合は、最初のイメージ(背景イメージ、私は推測する)。

    0

    イメージごとに画像ボックスを作成することができます。透明な背景は、単一の画像の効果を与えるでしょう。

    関連する問題