番外編 DICOM画像とNAS( Network Attached Strage ) その6


2つの違った画像を表示する

 1. 医師の希望を、お聞きすると

    同一の患者さんの、病状の経過を観察するために

    時系列の違う、2画像の比較が必須、との仰せです。

    そりゃ、そうですね、私も、歯科医ですので、そうしています。

    そうすると、プログラム的には

    各pictureBox毎に、イベントハンドラーを書かないと、いかんの?   ....絶えられません (-_-)

    この件に付きましては、解決できました、後述。

    コントロールの配置に付いては

    windowsのコントロールを調べて、TableLayoutPanel なるものを、見つけました、ホッ。

    ところが、

    このTableLayoutPanel に配置できるコントロールは、各行、各列の枠内に、、1つだけです。

    私は、CT画像を連続してスクロールするために、スクロールバーが必要なんです。

    で、

    PpictureBoxと、scrollBarを持つ、userControlを作成すれば、1つのコントロールと見なされ、解決できると解りました。

2.UserControlの作成

    今までのsolutionに、新しい項目を追加します。

 ->

    このusrControl1に、scrollBarと、pictureBoxを貼り付けます。

 ->

    そして、貼り付けたpictureBox1のイベントハンドラーを加えます。

 ->

    で、イベントハンドラーで行いたい事を、書きます。

  

    こんな風に、イベントハンドラーを加えていきます。

    userControl1に書くイベントハンドラーは、各イベントに付き、1つだけです。

    これで、複数のpictureBoxに、間違いなく、画像を、ドラッグドロップできるのを確かめました!

    どのpictureBoxに、ドラッグドロップしたのか、プログラムはしっかり、識別しています! 

    すごいですね..... 「パパは何でも知っている!」と、叫びたいくらいです (昔、そんなテレビドラマがあった)

    ここで、作ったuserControlを含めて、buildすると、ツールボックスの中に、userControl1が現れます。



3.TableLayoutPanel を使う

    Form1.csに戻ります。
  
    TableLayoutPanel を選択します、






    で、作った userControl1を、ツールボックスから選択します。





    ここでは、userControl1を2つ設置しました。

    現実の画像診断では、2つで充分だと、判断しました。

    1つのuserControlで、全画面を覆うには、

    TableLayoutPanel に埋め込まれたコントロールを一旦外して、再配置し、SetColumnSpanを使います。

    このresizeに際して、画面描画の為のGraphics g も、当然一から設定する必要があります。





    2画面表示する場合





    画像表示領域が、いくつあっても、イベントハンドラーは、たった1つ!.....すばらしい! 感激です。

 4.Ginkgo CADx を改良する手もある

    ご承知のように Ginkgo CADxは、open sourceで、高性能な、DicomViewerです。

    ただ、患者名の日本語表示ができないだけなので、source fileを入手して

    これを改良するのも、いい手ですね。

出典(Ginkgo CADx 2.6 source file)

   
 この点に関して、私のプログラムでは、こんな風にして、文字化けを解消しています。

    但し、databaseから、データを読み込む時に、w_charではなくて、char単位で読み込む事が必要です。

    そのためには、C#でdatabaseを読み込むためのラッパークラスである mySQliteModel.cppにおいて

    databaseをchar*で、読み込みます。



    そして、C#のプログラムの方では、encodingを設定して

    一旦、byte配列に格納し、このbyte配列から再び、stringとして、読み込んでいます。



    
こんな風で、まだ、simpleDicomViewerは、出来上がっていません。

    来年も、よろしくお願いもうしあげます。

H.23.12.28