2015/06/13(土) [n年前の日記]
#1 [prog] C#と.NETの勉強中
色々実装。
◎ グリッドへのスナップ。 :
グリッドへのスナップは、画像を移動する際、強制的に画像の左上座標をグリッド幅で丸めてみたところそれっぽくなった。int x = (新座標 / grid_w) * grid_w、みたいな。
本当は、グリッドにある程度の距離で近づいた時だけ座標が丸まるとか、画像の右下座標も参照して丸まったほうがちゃんとした操作性になるのだろうけど…。どうせ2Dゲームのレイアウト用なのだから、左上座標でガッガッと即座に丸まったほうがいいかもしれないなと。BG使ってUI画面を作ってた頃はそういうノリだったし。
本当は、グリッドにある程度の距離で近づいた時だけ座標が丸まるとか、画像の右下座標も参照して丸まったほうがちゃんとした操作性になるのだろうけど…。どうせ2Dゲームのレイアウト用なのだから、左上座標でガッガッと即座に丸まったほうがいいかもしれないなと。BG使ってUI画面を作ってた頃はそういうノリだったし。
◎ カーソルキーで1ドット単位で移動。 :
カーソルキーで1ドット単位で移動するのは、フォーム全体がキー入力を見るような設定にして実装。カーソルキーが入力された時に、画像がいくつか選択されていたら、該当画像の表示座標を変更、みたいな。
ただ、問題が。
これがもし、PictureBox にフォーカスを合わせることができるなら、PictureBox にフォーカスがある場合と ComboBox にフォーカスがある場合で処理を分けることができるけど。PictureBox にはフォーカスを合わせるという概念がないわけで。
また、ComboBox からフォーカスを外す方法も分からず。そもそも ComboBox からフォーカスが外れた場合、どこにフォーカスがある状態になってるのか、そこも分かってなくて。
一応、ComboBox に入力してからESCキーを押すとフォーカスが外れるようで、その状態なら画像のみ移動してくれるけど。今度は、カーソルキーを押したときに最初の一打だけは何故か反応しない状態に。上、上、上、と叩くと、最初の一打はスルーされるけど、二打目以降は反応する、みたいな。なんでや。
ググってみたけど、どうも ComboBox は扱いが難しいというか、動作がよくわからない時があるらしくて。どうすれば解決するんや…。
ただ、問題が。
- 起動後に画像をドラッグアンドドロップで読ませて、その状態でカーソルキーを押す分には思った通りに動く。
- しかし、ツールバー上でグリッド幅を ComboBox に入力してから、画像を移動するべくカーソルキーを使うと、画像が移動すると同時に、ComboBox のリスト項目までカーソルキーで上下に選ばれてしまう。
これがもし、PictureBox にフォーカスを合わせることができるなら、PictureBox にフォーカスがある場合と ComboBox にフォーカスがある場合で処理を分けることができるけど。PictureBox にはフォーカスを合わせるという概念がないわけで。
また、ComboBox からフォーカスを外す方法も分からず。そもそも ComboBox からフォーカスが外れた場合、どこにフォーカスがある状態になってるのか、そこも分かってなくて。
一応、ComboBox に入力してからESCキーを押すとフォーカスが外れるようで、その状態なら画像のみ移動してくれるけど。今度は、カーソルキーを押したときに最初の一打だけは何故か反応しない状態に。上、上、上、と叩くと、最初の一打はスルーされるけど、二打目以降は反応する、みたいな。なんでや。
ググってみたけど、どうも ComboBox は扱いが難しいというか、動作がよくわからない時があるらしくて。どうすれば解決するんや…。
◎ ズーム表示機能を実装。 :
ズーム表示は思ってたより簡単に実装できた。画像を PictureBox に描画する際、DrawImage(Image, x, y, w, h) を使うけど。w と h に画像サイズと異なる値を指定してやれば、自動で拡大縮小描画をしてくれるようで。例えば、2倍表示をするなら、x, y, w, h を2倍の値にしてやればいい。
うっかりしてたのが、マウスカーソル座標と画像表示範囲のヒットチェック。表示に使った値で判定しないといかんことを忘れていて、「アレ? 画像が選べないぞ?」と一瞬悩んだり。
うっかりしてたのが、マウスカーソル座標と画像表示範囲のヒットチェック。表示に使った値で判定しないといかんことを忘れていて、「アレ? 画像が選べないぞ?」と一瞬悩んだり。
◎ Visual Studio のTODO機能。 :
コメントに、TODO と書いておくとその行だけまとめて表示できる。
コメントとは別に、ユーザータスクというタブでもTODOを入力できる。
// TODO ズーム機能を書かないと…とか書いといて、Ctrl + \, T を押せば、タスク一覧という形でそれらの行がまとめて見れる、みたいな。
コメントとは別に、ユーザータスクというタブでもTODOを入力できる。
◎ Visual Studio のブックマーク機能。 :
- Ctrl + K, Ctrl + K で該当行にブックマークをつけられる。
- Ctrl + K, Ctrl + N で、つけたブックマークへ順々にジャンプ。
- ブックマークを外したいときは、ブックマークがついてる行で Ctrl + K, Ctrl + K。要するにトグルになってる。
[ ツッコむ ]
以上です。