0

C# と Windows MDI フォーム アプリケーションを使用して、非常に具体的な問題があります。「左」と「右」の 2 つ (またはそれ以上) の画像をユーザーに表示したいと考えています。画像の名前はユーザーから隠され、ユーザーは好みの画像を選択します (これは医用画像の品質に関する研究の一部であるため、ユーザーは、関連する可能性のあるキャプチャ パラメーターから盲目にする必要があります。イメージ名)。実際の名前を表示する代わりに、'image 0' や 'image 1' などの代替名がユーザーに表示されます。

標準MDILayout.TileVerticalまたはを使用するたびにTileHorizontal、画像が逆の順序で読み込まれます。たとえば、画像0と画像1がある場合、それらは表示されます

画像 1 画像 0

3つ以上の画像は次のようになります

2 1 0

また

3 2

1 0

などなど。問題は、ユーザーがこの右から左への順序に混乱していることです。別のダイアログ ボックスでどちらの画像が優れているか (または表示された画像を評価するか) を尋ねると、画面上の画像の順序とその順序を常に混同します。ダイアログボックスの画像の。つまり、評価ダイアログで画像 ​​0 1 2 3 などを注文すると、表示されている画像 3 は MDI 親ウィンドウの画像 0 であり、画像 2 は画像 1 であるなどと想定されます。左から右に読み取られます。 、画像は右から左に表示されています。画面上の順序を反映するために評価ダイアログ ボックスのタブの順序を変更すると、さらに混乱し (「画像 3 が画像 2 の前にあるのはなぜですか?」)、結果が間違った順序で表示され、通常は使用できなくなります。

MDILayoutでは、 inを使用して表示されたウィンドウの順序を強制するにはどうすればよいC#でしょうか? 手動で行う必要がありますか、それともレイアウト マネージャーに送信できるスイッチはありますか?

ありがとう!

4

5 に答える 5

1

別のアイデアは、実際の評価メカニズムを各子ウィンドウの下部に配置することです。そのため、回答は実際には子ウィンドウの画像に添付され、独自の領域に回答が表示されます。

于 2008-09-16T00:01:28.300 に答える
1

なぜ MDI インターフェイスを使用しているのですか? 確かに、TableLayoutPanel または同様のレイアウトを提供する単一のウィンドウの方が適しています。MDI レイアウトを使用する唯一の理由は、ユーザーがウィンドウを移動できるようにすることですが、問題の説明からわかる限り、それはとにかく望ましくありませんか?

于 2008-09-15T15:46:28.337 に答える
0

Groky のアドバイスに従い、MDI ではなく単一フォーム インターフェイスを使用することを強くお勧めします。

MDI を使用する必要がある場合は、MDI レイアウト メソッドが MDI フォームの Z オーダーを使用してフォームの最終位置を決定することを知っておく必要があります。たとえば、画像 2 が画像 1 の後ろにある場合、画像 1 は左に、画像 2 は右に配置されます。これを発生させる最も論理的な方法は、イメージ 2 のフォームをロードし、次にイメージ 1 のフォームをロードしてから、MDI レイアウトを実行することです。このメソッドを使用してActivateMdiChild、フォームを特定の順序で配置することもできます (1 つのフォームをアクティブにすると、他のフォームはその背後に配置されます)。

これは複雑でエラーが発生しやすいため、代わりに 1 つのフォームに 2 ペインのインターフェイスを使用することを強くお勧めしますが、これは機能します。

于 2008-09-15T16:15:36.830 に答える
0

Owen と Groky に感謝しますが、Single-Form インターフェイスは機能しません。まず、私はすでに MDI 形式の表示コードを持っているので、その書き直しには非常に大きなコードの書き直しが必要になります。少し前にアプリの基本を書くのに約 3 週間かかりました。これらは私がここに示している jpg ではありません。これらは DCM 画像であり、それぞれが 30 MB で、医療画像以外では見たことのないさまざまなサポート ツールを備えています。

第二に、放射線科医の中には画像比較のための分割スクリーニングを好まない人もいれば、必要とする人もいます。そのため、両方の種類のユーザーに対応するために、これをタイリングでセットアップしましたが、ユーザーは画像を最大化してから切り替えることができます。したがって、MDI は、そのさまざまな好みのセットに対する適切なアプローチです。タブ コントロールの非常に複雑なセットを備えた単一のインターフェイスは、既に存在し、(ほとんどの場合) 動作しているシステムと比較すると、悪夢のように聞こえます。

ただし、画像の表示方法を制御しているので、z オーダーを強制することができます。私がそれらを適切に読んでいれば、それがフレッドとオーウェンの答えの基礎です。ユーザーが「評価モード」に入ると、プログラムが画像をロードして表示し、ユーザーが評価を入力すると、画像が閉じられます。その制約を考えると、おそらく特定の z 順序付けを適用できます (おそらく、0 から長さではなく、長さから 0 にループすることによって)。

于 2008-09-15T17:22:32.100 に答える
0

(画像を表示する前に)次のことを行うことで、この問題を回避できますか?

  1. 画像参照を構造体 (配列など) に入れます。

  2. 再帰関数で逆順の構造を構築します (または元の構造を並べ替えます)。

  3. 新しい逆順構造を使用して、以前と同じように子ウィンドウを作成します。

もう1つのレイヤーを追加しますが、逆のレイアウト順序スイッチがすぐに見つからない場合、問題を解決する可能性があります.

于 2008-09-15T15:53:04.090 に答える