フォントサイズをポイントからピクセルに変更

Form_Paint或いはPanelコントロールの~_Paintメソッドの中に、PaintEventArgs型のパラメータeからディスプレイのDPIを取得できる。
横方向のDPI : e.Graphics.DpiX
縦方向のDPI : e.Graphics.DpiY

例えば、1920*1080のディスプレイを100%に設定した場合は96で、125%設定の場合は120となる。(DpiXとDpiXが同じの場合がほとんど)

① 縦方向のDPIを取得して保存しておく。

  Utility.DpiY = e.Graphics.DpiY

② 幾何変換のための3×3擬似空間行列クラスのインスタンスを作る。

  System.Drawing.Drawing2D.Matrix m = CurrentDicomImage.Matrix(CurrentDicomViewer);

③ フォントサイズをポイント単位からピクセル単位に変換する。

  short FontSizeInPixel = (short)(FontSizeInPoint / 72.0 * Utility.DpiY / DicomGlobal.Zoom(m));

※1Pointは1/72Inchと相当する。

※上記はDicomImage空間の数値を得る。

IISでのFTPバインド設定について

IISFTPのバインド設置でIPアドレスを「*」に設定すると、localhost, 127.0.0.1, 192.168.0.xxxのどれでもftpでログインできる。

逆に「192.168.0.123」だけバインドすると、このIPだけftpできるようになる。

DicomObjects_ビューア内画像位置座標値取得

ビューア内、画像表示レイアウトがm×n関係なく、以下方法で現在選択中画像の開始位置の座標値を取得できる。

m_SelectedImage.CellLocation(curViewer)

フォームを一時的に最前面に表示

フォームを一時的に最前面に表示する方法:
this.Show();
this.TopMost = true;
this.TopMost = false;

画像ファイル表示後移動できない現象の解消

string strFileFullPath = @"C:\ims\img8.jpg";

//pictureBox1.Image = System.Drawing.Image.FromFile(strFileFullPath);
//↑直接開くのではなく、↓FileStreamを利用することで「ロック」されなくなる

FileStream fs = new FileStream(strFileFullPath, FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fs);
fs.Close();

参考URL:
http://ameblo.jp/dairy789/entry-11304440424.html

(C#)Listの中身を値渡しでコピーする方法

Listの中身を別のリストにコピーしたいとき、
単純にリストを代入すると参照渡しになってしまう。

コンストラクタを使ってListの中身を値渡しをすればいい。

var list1 = new List<string>();
list1.Add("a");
var list2 = new List<string>(list1);
list2.Add("b");
Console.WriteLine(string.Join(",", list1)); // a
Console.WriteLine(string.Join(",", list2)); // a,b

Webサービス公開時に「Web Deploy タスクに失敗しました。(このアクセス制御リストは標準の形式ではないため、変更できません。)」エラー発生

[手順]
・管理者権限でVisual Studio 2015起動してWebサービスプロジェクト選択し、右クリックで「公開」を選択
・Webを発行する
  発行方法:Web Deploy
  サーバー:localhost
「Web Deploy タスクに失敗しました。(このアクセス制御リストは標準の形式ではないため、変更できません。)」 と表示される

[解決方法]

IISマネージャーから当該フォルダを右クリック
・アクセス許可の編集を選択
・セキュリティタブを選択
・警告ダイアログが表示されるのでOKを選択
・許可を追加して適用