dotnetlogo2だいぶそれらしくなってきた。
【プロパティ】
BorderWidth : Single : 枠線の太さ
BorderColor1 : Color : 枠線1の色
BorderColor2 : Color : 枠線2の色
Fixed : Boolean : 枠線描画を固定するためのフラグ(呼び出し側で何とかすれば必要ないかも)

【メソッド】
DrowBorder() : 枠線1を引く
EraseBorder() : 枠線2を引く
---------------------------------
枠線2は地の色という感じの解釈。でも動作的には線を引くわけで。
このため、線の太さ分だけ絵が侵食されます・・・
現実に PictureBox を使ってるケースでは Image プロパティで単純に画像ファイルを読み込むわけじゃなくて、PictureBox の大きさに合わせて画像をリサイズして表示しているので、枠線の太さだけ小さく絵を作ればいいかな、と。

絵を PictureBox いっぱいに表示して、枠線1は絵に被るけど、EraseBorder メソッドで線に隠れてた部分の絵が表示できるようになれば枠線2を使って線を描くような嘘っぱち消去は必要ない・・・でもそこまで頭良くないし・・・

で、当座の問題。BorderWidth の最大限界値がいくつなのかがわからない・・・
普通に考えれば、PictureBox の縦または横のうち短い方の辺の半分の長さでしょ。でもダメ。
単位が違うみたい。
実際に真四角の PictureBox を用意して、枠線の太さを辺の半分にしてみた。
これで枠線を書くと PictureBox 全体が枠線で埋め尽くされる筈・・・
結果スカスカ。超余裕。
PictureBox の Height, Width は「ピクセル単位」と書いてある。
枠線を書く際の Pen オブジェクトの Width は・・・
「ペンの幅」としか書いてない orz
Web を漂っていたら「Pen オブジェクトの Width はピクセル単位です」というページを見つけたけれど、実際に目の前でそうならないわけで。
もし単位が違うのなら変換すればいいだけのこと。
.NET のことだからきっと今は謎単位であっても絶対に列挙体で定義されてるはず・・・
でも変換ってどうやるのさ。


週末は調べ物とメタルギア ソリッドと教授の DVD で引きこもり状態だね。
あ、日曜日はバンド仲間と優寿司で忘年会の予定。