講座紹介
Course introduction

YAKAMI DICOM
ツール集

English | 日本語

新着情報

バグ読めない DICOM ファイルに関する情報を募集しております。ご協力頂けますとありがたいです。
YAKAMI DICOM Tools のソースコード(C079) のライセンスについてのお問い合わせは、 京都大学産官学連携本部 知財・ライセンス化部門 までお願いします。

目次

紹介

「八上 DICOM ツール集 / YAKAMI DICOM Tools」は、 フリーウェアで、研究用に DICOM ファイルを扱うためのツール集です。無料でご利用になれます。
診療用には使用しないでください。

このパッケージは、以下のアプリケーションと文書を含んでいます。

アプリケーション

DICOM Viewer
DICOM Converter
File Mover

DICOM Viewer

親子ウィンドウ式(MDI)高速 DICOM ビューワープログラム

DICOM Converter

DICOM ファイルから DICOM/画像ファイルへの一括ファイル変換プログラム

File Mover

DICOM File 整理プログラム

Folder Renamer

DICOM ファイルを収めたフォルダの名前自動変更プログラム

DICOM Counter

DICOM ファイル集計プログラム

Shortcut Maker

ショートカット自動作成プログラム

Index Maker

DICOM ファイル一覧 ("_DCM_IDX.txt") 自動作成プログラム

Table Maker

DICOM ヘッダ表自動作成プログラム

PACS Client

検査を検索して開くためのインターフェイスです。

WL/WW Editor

ウィンドウ・レベル/幅(WL/WW)を編集するプログラム

Gamma Editor

ガンマカーブ編集プログラム An editor for gamma curve settings.

CLUT Editor

Color Look-Up Table (CLUT) ファイルを編集するプログラム

Combi Editor

WL/WW、ガンマカーブ、CLUT の組み合わせを編集するプログラム

Command-Line Converter

DICOM ファイルをコピーしたり画像ファイルに変換するコマンドラインのプログラム

Conveyer

"DICOM Viewer", "DICOM Converter" or "PACS Client" を呼び出す中継プログラム。

共通設定

このパッケージの複数のプログラムで共通の設定を編集するプログラム

レジストリ設定

このパッケージに関するレジストリ登録の追加と削除を行うプログラム

文書:

readme.ja.txt はじめにお読み下さい
viewer_guide.ja.txt "DICOM Viewer" の使い方
script.ja.txt DICOM Converter 用 DICOM 変換スクリプトの書き方
DICOM 変換スクリプト例 何もしない / 匿名化 / 暗号化(binary) / 復号(binary) / 暗号化(text) / 復号(text)
filename.ja.txt 出力ファイル/フォルダの Path の指定の仕方
conv-cmd.ja.txt "DICOM Converter" をDOS 窓から対話的にコントロールする方法
pacs-cmd.ja.txt "PACS Client" をDOS 窓から対話的にコントロールする方法
cmd_conv_usage.ja.txt "Command-Line Converter" の使用法
tbl_cmd.ja.txt "Table Maker" をDOS 窓から対話的にコントロールする方法

目次に戻る

動作環境

  • OS:Windows 10/8.1/8/7/Vista®/XP/2000
  • マシン:上記OSの動作するPC
  • メモリ:最小256MB, DICOM Viewer でのメモリ不足を防ぐには1GB 以上を推奨
  • 必要とするライブラリ:Microsoft .NET™ Framework 2.0

目次に戻る

ダウンロード

以下のリンクからお願いします。

最新版

YAKAMI DICOM ツール集 ver. 1.4.5.0 ZIP 圧縮、5,179kB (x86版)
(2014/01/21 公開、32bit版 Windows for Windows 10/8.1/8/7/Vista®/XP/2000 (64bit))

8/7/Vista®/XP/2000 対応)
English version, 4,559kB

YAKAMI DICOM ツール集 ver. 1.4.5.0 ZIP 圧縮、5,101kB (x64版)
(2014/01/21 公開、64bit Windows for Windows 10/8.1/8/7/Vista®/XP/2000 (64bit))

8/7/Vista®/XP/2000 対応)
English version, 4,655kB

全バージョンで、描画を DirectX と GDI を実行中に切り替え可能になりました。 既定では GDI を使います。 DirectX の使用は、 32bit 環境での動作に限ります。

旧版

YAKAMI DICOM ツール集 ver. 1.4.4.0 ZIP 圧縮、5,164kB (x86版)
(2013/10/04 公開、32bit版 Windows 8/7/Vista®/XP/2000 対応)

English version, 4,546kB

YAKAMI DICOM ツール集 ver. 1.4.4.0 ZIP 圧縮、5,091kB (x64版)
(2013/10/04 公開、64bit Windows 8/7/Vista®/XP/2000 対応)

English version, 4,633kB

全バージョンで、描画を DirectX と GDI を実行中に切り替え可能になりました。 既定では GDI を使います。 DirectX の使用は、 32bit 環境での動作に限ります。

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,714kB (x86版)
(2013/03/04 公開、32bit版 Windows 7/Vista®/XP/2000 対応)

English version, 2,360kB

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,873kB (x64版)
(2013/03/04 公開、64bit Windows 7/Vista®/XP/2000 対応)

English version, 2,481kB

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,987kB (DirectX, x86版)
(2013/03/04 公開、32bit版 Windows 7/Vista®/XP/2000 対応)

English version, 2,650kB
使用には DirectX® の更新が必要です!!!

目次に戻る

インストール

インストールするには、ダウンロードして解凍して出来たフォルダの中にある setup.exe を実行してください。

重要以前のバージョンのものが既に インストールされている場合は予めアンインストールしておいてください。
DirectX® 版をご利用になる場合は、YAKAMI DICOM ツール集を使用する前に、 以下のページにあるインストールプログラムを利用して、最新(2007/07/27 以降)の バージョンの DirectX® がインストールされた状態にしておいてください。
DirectX®:
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=ja-nec

これらのプログラムをインストールして使用するには、 Microsoft .NET™ Framework 2.0 のインストールを必要とします。
Windows 10/8/7/Vista® には .NET™ framework 2.0 が初めから入っています。
Windows 10/8 では .NET™ framework 2.0 が規定では有効化されていませんので、 コントロールパネル > プログラムと機能 > Windows の機能の有効化と無効化 のダイアログで「.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)」に チェックを入れて「 OK 」をクリックしてください。

目次に戻る

アンインストール

コントロールパネルの「プログラムの追加と削除」(Windows XP) か 「プログラムと機能」(Windows 7/Vista®) を開き、リストから “YAKAMI DICOM Tools” (ver. 1.0.4.1 以降) か “DICOM Tools” (ver. 1.0.4.1 以前) を選び、 「アンインストール」をクリックしてください。

目次に戻る

実行方法

スタートメニューの [全てのプログラム] – [YAKAMI Software] の中に ショートカットがありますので、それをクリックしてください。

目次に戻る

主な機能

DICOM Viewer

DICOM Viewer

親子ウィンドウ式(MDI)高速 DICOM ビューワープログラム

  • ファイル形式:DICOM 形式。little endian も big endian も対応。画像データのマルチフレームや入れ子形式や各種圧縮にも対応(JPEG, JPEG Lossless, JPEG LS, MPEG)。
    (MPEG データが含まれていた場合、外部プログラムでの再生用に .mpeg ファイルに変換)
    他の医用/研究用画像形式:NIfTI, ANALIZE, RAW に対応
    画像形式:JPEG (JFIF, LossLess JPEG, JPEG-LS, JPEG 2000), Bitmap, EMF, EXIF, Icon (Windows), W3C PNG, TIFF, WMF (Windows メタファイル)
  • フォルダ毎に子ウィンドウを開いて DICOM ファイルを表示し、測定機能も利用でき、子ウィンドウ間での連動機能も搭載。
  • 表示機能:拡大、縮小、90度毎回転、鏡像、平行移動、ウィンドウ/レベル(WL/WW)変更、白黒反転
  • 連動機能:スライス位置、縮尺と向き、表示位置、WL/WW と白黒反転
  • 測定機能:長さ、円形ROIの平均値/標準偏差/最大値/最小値
    以上はログファイルによる保存と再現が可能
  • 画像フィルタ:スラブ – 平均/MIP/MinIP/中央値、平面/立方 – 平均/膨張/収縮/中央値
  • 画像融合
  • クロス・リファレンス
  • 拡大鏡
  • 物差し
  • 読影の進捗
  • DICOM ファイルから DICOM/画像ファイルへの変換(匿名化も可)
  • 等々
DICOM Converter

DICOM Converter

DICOM から DICOM へのファイル一括変換プログラム
多数の DICOM ファイルの形式やヘッダ内容や画像やファイル名やフォルダ名を一括で書き換え可能。スクリプトを書けばヘッダの詳細な操作も可能。匿名化用としても使用可能。
なお、変換速度は、 Windows Explorer での単なるファイルのコピーと同程度。

File Mover

File Mover

DICOM File 整理プログラム
各ファイルをヘッダ内容に応じたパス(フォルダ名+ファイル名)に配置。
OsiriX™ の DICOM file 保存フォルダが処理可能であることを確認済み。

Folder Renamer

Folder Renamer

DICOM ファイルを収めたフォルダの名前自動変更プログラム
各フォルダの名前を、その中にある DICOM ファイルのヘッダ内容に応じて変更。その変更方法は自在に指定可能。

DICOM Counter

DICOM Counter

DICOM ファイル集計プログラム
指定されたフォルダの中にある全てのファイルから DICOM ファイルを探し出して集計します。

Shortcut Maker

Shortcut Maker

ショートカット自動作成プログラム
DICOM ファイルを収めたフォルダをスキャンし、そのフォルダへのショートカットファイル (.lnk) を作成します。

Index Maker

Index Maker

DICOM ファイル一覧 ("_DCM_IDX.txt") 自動作成プログラム
"DICOM Viewer" による読み込み時間の短縮のためにフォルダ毎に作られます。

Table Maker

Table Maker

DICOM ヘッダ表自動作成プログラム
DICOM ファイルからヘッダを読み取って一覧表を作ります。

PACS Client

PACS Client

検査を検索して開くためのインターフェイスです。
このプログラムは .dcmvf と .lnk のファイルを探し出して検査リストを表示します。

WL/WW Editor

ウィンドウ・レベル/幅(WL/WW)を編集するプログラム

Gamma Editor

ガンマカーブ編集プログラム An editor for gamma curve settings.

CLUT Editor

CLUT Editor

Color Look-Up Table (CLUT) ファイルを編集するプログラム

Combi Editor

WL/WW、ガンマカーブ、CLUT の組み合わせを編集するプログラム

Conveyer

"DICOM Viewer", "DICOM Converter" or "PACS Client" を呼び出す中継プログラム

Command-Line Converter

DICOM ファイルをコピーしたり画像ファイルに変換するコマンドラインのプログラム。出力パスはパスコマンドで指定可。

共通設定

このパッケージの複数のプログラムで共通の設定を編集するプログラム

レジストリ設定

このパッケージに関するレジストリ登録の追加と削除を行うプログラム

目次に戻る

サポート

YAKAMI DICOM ツール集 / YAKAMI DICOM Tools に関する情報と最新版のバイナリを以下のページに置いています。

YAKAMI DICOM ツール集 / YAKAMI DICOM Tools:
https://diag-rad.kuhp.kyoto-u.ac.jp/course/department/tech/dicom-tools-ja/

バグや改善提案などがございましたら、 yakami*kuhp.kyoto-u.ac.jp (*→@に変更ください) まで ご連絡いただけますとありがたいです。 特に、"DICOM Viewer" で開かない DICOM file がございましたら 教えて頂けますとありがたいです。

目次に戻る

商標など

  • Windows 7/Vista® はマイクロソフト株式会社の米国およびその他の国における登録商標です。
  • この文書は、その他の各社の商標や登録商標を含んでいます。

ライセンス条項

  • ライセンス分類:フリーウェア
  • 転載・再配布:著作者の許諾が必要
  • 改変:許可
  • 著作表示:著作者(必須)、ソフトウェア名(必須)、配布サイトの URL (推奨)
  • 表示方法:実行ファイル中での表示(例:バージョン情報)か 添付文書(例:readme.txt)の少なくとも一方
  • 二次著作物:二次著作物の二次著作物も含め、このライセンス条項の遵守が必要
  • 変更の記載:直接的であれ間接的であれ、 このソフトウェアを元に変更されたということを、 実行ファイル中(例:バージョン情報)か添付文書(例:readme.txt)の 少なくとも一方で明記して下さい。
  • ライブラリ:このソフトウェアは、 [依存関係] の項目に記載された複数のライブラリを使用しています。 二次著作物の著作者も含め、利用者の皆様は、 それらのライブラリのライセンス条項も遵守して下さい。

なお、 YAKAMI DICOM Tools のソースコード(C079) のライセンスについてのお問い合わせは、 京都大学産官学連携本部 知財・ライセンス化部門 までお願いします。

依存関係

  • このソフトウェアは、 Microsoft .NET(TM) Framework 2.0 を使用しています。
  • このソフトウェアは、 FreeImage open source image library を使用しています。
    詳しくは http://freeimage.sourceforge.net を御覧ください。
    FreeImage は、 FIPL, version 3.12.0 に基づいて使用されています。
  • このソフトウェアは、以下のライブラリを使用しています。
    “IJG Win32 – JPEG co-decoding library with Lossless JPEG Extentions”.
    IJG: Independent JPEG Group, http://www.ijg.org/ を御覧ください。
    Lossless JPEG co-decoding extensions: 開発者は Ken Murchison
  • このソフトウェアは、"CharLS" (開発者は Jan de Vaan)を使用しています。
    http://charls.codeplex.com/ を御覧ください。
  • このソフトウェアは、 AForge.NET Framework 2.1.5 を使用しています。
    詳しくは http://code.google.com/p/aforge/ を御覧ください。
    AForge.NET は GNU Lesser General Public License, version 3 に基づいて使用されています。

免責

このソフトウェアは、「そのまま」で提供され、知的財産侵害が無いことや 特定目的に適合していることの保証を含め、且つそれに限らず、 一切の明示的及び暗示的な保証をいたしません。 私たちは、このソフトウェアの使用に起因する一切の直接的、間接的、 偶発的、特殊的、典型的、必然的な損害(代替の品物やサービスの調達費用、 利用機会やデータや利益の損失、誤診を含め、且つそれに限らず)に対して、 たとえ、いかなる原因でも、いかなる法的責任が問われようとも、 契約や法的強制や不法行為(過失等を含む)があろうとなかろうと、 その様な損害の可能性が指摘されていようとも、一切の責任を負いません。

目次に戻る

"YAKAMI DICOM Tools" についての/を用いた研究の論文・発表など

査読付き論文 / Peer Reviewed Scientific Papers

  • Using a High-Speed Movie Camera to Evaluate Slice Dropping in Clinical Image Interpretation with Stack Mode Viewers.
    Masahiro Yakami, Akira Yamamoto, Morio Yanagisawa, Hiroyuki Sekiguchi, Takeshi Kubo and Kaori Togashi.
    Journal of Digital Imaging. 2013 Jun;26(3):419-26. Epub 2012 Oct 07
    [SpringerLink] [PubMed] [KURENAI(Free)]
    AuntMinnie.com紹介記事が載りました。
  • Development and Evaluation of a Low-Cost and High-Capacity DICOM Image Data Storage System for Research.
    Masahiro Yakami, Koichi Ishizu, Takeshi Kubo, Tomohisa Okada, Kaori Togashi.
    Journal of Digital Imaging. 2011 Apr;24(2):190-5. Epub 2010 Feb 24
    [SpringerLink] [PubMed]

学会発表 / Presentations

  • Slice dropping in clinical image interpretation with stack-mode viewers: How to cope with this problem
    Masahiro Yakami [1], Akira Yamamoto [1], Morio Yanagisawa [2], Hiroyuki Sekiguchi [1], Takeshi Kubo [1], Kaori Togashi [1]
    1. Diagnostic Radiology, Kyoto University Hospital, 2, J-MAC SYSTEM, Inc.
    RSNA2013 Annual meeting.
    Chicago, U.S.A., 4 Dec 2013.
  • YAKAMI DICOM Tools(フリーの DICOM Viewer/Converter/etc.)の使い方
    八上 全弘(京都大学医学部附属病院放射線診断科)
    第15回画像認知研究会
    8月25日(日)11:30-12:00 Workshop
    キャンパスプラザ京都、京都府、2013年8月25日
  • CT画像の広範囲かつ詳細な階調が区別できるカラー表示方法の提案
    八上全弘[1],関口 博之[1], 江本 豊[2], 藤本 晃司[1], 久保 武[1], 富樫 かおり[1]
    1.京都大学医学部附属病院放射線診断科 2.京都医療科学大学
    第15回画像認知研究会
    8月25日(日)10:05-11:20 一般演題Ⅰ(PACS)、番号:2
    キャンパスプラザ京都、京都府、2013年8月25日
  • コマ送り読影中のコマ落ちの調査及び対策技術の開発と評価
    八上 全弘[1],山本 憲[1],柳澤 盛雄[2],関口 博之[1],久保 武[1],江本 豊[3],富樫 かおり[1]
    1.京都大学医学部附属病院放射線診断科 2.株式会社ジェイマックシステム 3.京都医療科学大学
    第15回画像認知研究会
    8月25日(日)10:05-11:20 一般演題Ⅰ(PACS)、番号:1
    キャンパスプラザ京都、京都府、2013年8月25日
  • Evaluation of Slice Dropping in Clinical Image Interpretation with Stack-Mode Viewers Using a High-Speed Movie Camera and Development of Countermeasure Techniques
    Masahiro Yakami [1], Akira Yamamoto [1], Morio Yanagisawa [2], Hiroyuki Sekiguchi [1], Takeshi Kubo [1], Kaori Togashi [1]
    1. Diagnostic Radiology, Kyoto University Hospital, 2, J-MAC SYSTEM, Inc. RSNA2012 Annual meeting.
    Chicago, U.S.A., 25 Nov 2012.
  • 小児専門病院CT撮影線量実態調査
    仲田 佳広[1]、藤原 身和子[2]、八上 全弘[3]、青天目 州晶[1]、小原 哲[1]、盧 暁光[1]、赤羽 恵一[1]、島田 義也[1]、藤井 啓輔[1,4]、星岡 明[2]、白山 明[2]、横山 孝徳[2]、 伊達 裕昭[2]
    1.放射線医学総合研究所 医療被ばく研究プロジェクト 2.千葉県こども病院 3.京都大学医学部附属病院 4.国立がんセンター東病院
    第40回日本放射線技術学会秋季学術大会 10月5日(金)9:00-9:40 CT-10.線量評価、演題番号:245
    タワーホール船堀、東京都、2012年10月5日
  • ページング読影時の表示欠損スライス発生の調査及び対策技術の開発と評価
    八上全弘[1]、山本憲[1]、柳澤盛雄[2]、呂普軼[2]、藤本晃司[1]、江本豊[3]、富樫かおり[1]
    1.京都大学医学部附属病院放射線診断科 2.株式会社ジェイマックシステム 3.京都医療科学大学
    第68回日本医学放射線学会
    4月14日(土)10:20-11:30 28.診断:IT・PACS、演題番号:283
    パシフィコ横浜、神奈川県、2012年4月14日
  • YAKAMI DICOM Tools の DICOM形式医用画像を使った研究における有用性
    八上全弘[1]、石津浩一[2]、久保武[1]、岡田知久[1]、江本豊[1]、富樫かおり[1]
    1. 京都大学医学部附属病院放射線診断科 2.京都大学医学部人間健康科学科
    第29回日本医用画像工学会大会
    東海大学(伊勢原キャンパス)、神奈川県、2010年7月30日
  • YAKAMI DICOM Tools の医用画像研究における有用性
    八上全弘、石津浩一、久保武、岡田知久、富樫かおり
    京都大学大学院医学研究科放射線医学講座(画像診断学・核医学)
    第68回日本医学放射線学会
    パシフィコ横浜、神奈川県、2009年4月18日
  • 安価かつ利便性の高い研究用大容量DICOMデータサーバの開発と運用
    八上 全弘、石津浩一、富樫かおり
    京都大学大学院医学研究科放射線医学講座(画像診断学・核医学)
    第67回日本医学放射線学会
    パシフィコ横浜、神奈川県、2008年4月5日
  • 患者プライバシー保護のための高機能DICOMファイル変換ソフト開発とその評価
    八上 全弘、石津浩一、富樫かおり
    京都大学大学院医学研究科放射線医学講座(画像診断学・核医学)
    第67回日本医学放射線学会
    パシフィコ横浜、神奈川県、2008年4月5日
  • Masahiro Yakami, MD Takeshi Kubo, MD, PhD, Koichi Ishizu, MD, PhD, Koji Fujimoto, MD, Yoshio Iizuka, Masami Kawagishi, Kaori Togashi, MD, PhD.
    Computer inference of diagnosis from features scored by radiologists: Evaluation of 51 features of 222 pulmonary nodules in 100 consecutive CT examinations.
    RSNA 2009 Annual meeting
    Chicago, U.S.A., 2 Dec 2009.
  • Masahiro Yakami, Koichi Ishizu, Takeshi Kubo, Tomohisa Okada, Kaori Togashi.
    Development of an Integrated DICOM Conversion Tool for Anonymized Medical Image Transport for Radiological Research.
    RSNA 2008 Annual meeting.
    Chicago, U.S.A., 3 Dec 2008.
  • Masahiro Yakami, Koichi Ishizu, Takeshi Kubo, Tomohisa Okada, Kaori Togashi.
    Development and Evaluation of an Affordable and Massive DICOM Data Storage System for Research.
    RSNA 2008 Annual meeting.
    Chicago, U.S.A., 2 Dec 2008.

商用誌

目次に戻る

更新履歴

課題

Lossless JPEG 形式への対応 → ver. 1.1.3.0 で対応しました。
FreeImage open source image library を使って JPEG 2000 などで画像データが圧縮された DICOM ファイルの読み取りに 成功しました。
 しかし、 FreeImage で使われている JPEG のコードが Lossless JPEG に 対応していないものなので、残念ながら Lossless JPEG に対応できません。 フリーでの LossLess JPEG への対応を試みているものの、選択肢は少なく、 残念ながらまだできていません。情報をかなり調べてみましたが、 私の状況と似た方もいらっしゃるようで、 複数個所で似た質問を見かけましたが、いずれも未解決です。
 選択肢を挙げてみます。
GDCM:Lossless JPEG を使った DICOM ファイルも 問題なく読み込めました。ただ、DICOM 処理部分も使用することになり、 採用するならば、100% .NET で出来ている DICOM 処理の自作ライブラリと、 それを使って実現された種々の機能やその他有利な点をどうするか といった問題の解決が必要になります。
ljpeg62.0.1:残念ながらまだ VisualStudio での コンパイルに成功していません。付属している Visual C++ 用のファイルが古く、 残念ながら VisualStudio 2005/2008 では読み込めません。
IJG Win32 – JPEG co-decoding library with Lossless JPEG Extentions:コンパイルは できたのですが、 FreeImage との連携はできていません。 FreeImage に含まれている IJG 由来のコードとは バージョンが違い、 VisualStudio でこれを project として FreeImage の Solution に組み込んで利用するにはかなりの改造が必要なようで、 現在のところできていません。また、このコードを hack して C# のコードから 利用するとなると、自分で Wrapper を作らなければならず、できておりません。

Multiframe format への対応 → ver. 1.0.8.8 で対応しました。
自作の DICOM 処理ライブラリは、 NEMA のページに 置いてある規格を読んで作ったので、 構造の認識自体はできていますが、ひとつの DICOM ファイルに複数の画像が含まれている場合の Viewer での Interface をどうするかという問題は残っています。 余裕が出来たら行いたいと思います。
MPR への対応
今後の対応を検討しています。余裕が出来たら行いたいと思います。
DICOM server との通信
今後余裕があれば取り組みたいと思っております。私は NEMA のページに置いてある DICOM の資料を見て プログラムを実装して参りましたが、通信部分はまだ習得しておりません。
 GDCM の使用なども検討しております。

目次に戻る

雑感

フレーム飛びについて

Windows 環境で GDI を用いた通常の描画を速い速度で行うとコマ落ちが発生してしまいます。 プログラムの描画とディスプレーの書き換えが非同期だからです。 CPU 上で動作しているプロセスの実行時間は不定ですから、これを同期するには、 ビデオカード上で生成している、ディスプレーに送る信号の画面更新のタイミングに合わせた 外部からの割り込みが必要です。 それを利用するには、プログラムの側では DirectX や OpenGL などを用いる必要があります。 .NET の環境から容易に DirectX を利用するには、 Managed DirectX が便利ですが、 残念ながら開発は中止されたようで、 64bit 環境には対応していません。 ただ、 DirectX は Windows Aero を経由して使うという方法もあります。 YAKAMI DICOM Tools では、DirectX 版では前者、非 DirectX 版では後者を採用しています。 後者を実装する際には、とあるソフトの開発記録というサイトの Windows 7 におけるULWの挙動 (3)というページを参考にさせていただきました。 フレーム飛びの問題は、医療に用いる上では見落としなど重大な問題に繋がりかねませんので、 論文学会発表として発表させていただきました。 重要な内容を分かりやすく書いて公開してくださっていた方々に感謝します。

.NET のフォームの「メモリリーク」について

一般に、C# などの Garbage Collection 機構を持つ言語では、 「どこからも参照されなくなったら、破棄されて Gargbage Collection の対象となる」 と言われて、常識とされています。しかし、少し考えてみるだけで、 これには例外があることが分かります。それは Form オブジェクトです。
プログラム起動時に Main() 関数の Application.Run() で呼び出される Form (=MainForm) 以外に、 起動後に別のフォーム (=SubForm) を生成して表示したとします。 すると、 SubForm への参照を MainForm が保持しなくなっても、 SubForm を破棄するわけにはいきません。なぜならそれは表示され、使用されているからです。

public class MainForm : Form
{

	private void openButton_Click(object sender, EventArgs e)
	{
		SubForm frm = new SubForm();
		frm.Show();
	}
}
			

Application.OpenForms が参照しているではないかと思われる方も いらっしゃるかもしれませんが、それが参照するか否かをプログラマが 直接制御することは出来ません。つまり、他のオブジェクトの場合と違い、 null を代入するなどして Form への参照をプログラマが明示的になくすことはできず、 使われなくなったかどうかが .NET Framework により別途判断されているわけです。 しかし、使わなくなったかどうかを的確に判断するは難しい問題だと思います。 なぜなら、見えなくなっても、再度表示させることが出来なくなっても、 それゆえ利用者から操作されることが全く無くても、 例えば処理に時間のかかるプロセスが稼働中であったり、 Timer などの内発的なイベントを受けて 何らかの仕事をしていたりすることはあり得るからです。 ですので、プログラムを書く側としては、明示的に Dispose() を呼んだら 確実に破棄して貰えることを期待したくなるのですが、残念ながらそうはなっていませんでした。 たとえ Form.Dispose() を呼んでも、Timer が動作していたらメモリを解放してくれません。 これはかなり注意の必要な仕様なのではないかと思います。 これが原因と思われる未解決の案件もかなりありそうです。 一言に Timer と言っても、 System.Threading.Timer クラス、 System.Timers.Timer クラス、 System.Windows.Forms.Timer クラスなどと多数あって必要に応じて使い分けられていますので、 これもこの問題を分かりにくくしているのかもしれません。
参考
http://bbs.wankuma.com/index.cgi?mode=al2&namber=11716&KLOG=26
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46554&forum=7
http://www.atmarkit.co.jp/fdotnet/index/bbs/dir98.html

.NET での最大化・最小化ボタン(機能)の override

いつもお世話になっているDOBON.NETフォームを移動できないようにする を参考にして海外のサイトで情報を集め、ウィンドウの最大化・最小化のコマンドを override してみました。コードは下記の通りです。最大化・最小化ボタンだけではなくて、 タイトルバーのダブルクリックやコントロールボックスのメニューで最大化・最小化を行っても 同じ結果が得られます。カスタムでタイトルバーを作ってボタンを配置すると どうしても統一感を崩しがちですので、 Windows が標準で用意するものをそのまま 使うことが出来ると何かと便利なことも多いと思います。参考になれば幸いです。

private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
private const int SC_MAXIMIZE = 0xF030;

[System.Security.Permissions.SecurityPermission(
	System.Security.Permissions.SecurityAction.LinkDemand,
	Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
protected override void WndProc(ref Message m)
{
	if (m.Msg == WM_SYSCOMMAND)
	{
		switch (m.WParam.ToInt32() & 0xFFF0)
		{
			case SC_MAXIMIZE:
	/* Do Something */
				return;
			case SC_MINIMIZE:
	/* Do Something */
				return;
		}
	}
	base.WndProc(ref m);
}
		

参照

目次に戻る

YAKAMI DICOM Tools. Copyright (C) Masahiro YAKAMI 2014. All rights reserved.
email: yakami*kuhp.kyoto-u.ac.jp (*→@に変更ください)
ページ作成日:2007/10/12、最終更新日:2014/01/21