時報機能
いくつかのボケ問題は未解決ですがメイン機能はほぼ形になりまして一点残るのが時報機能。指定時刻または毎正時にバルーン的なお知らせが表示される機能です。
こんなやつ↓
普通Toastとかを使うんかもしれませんがコンポーネントを知らない悲しさから、VB+FORMS版では子FORMを作成しメイン側から指定時刻に呼び出し、子FORM側に別途設定したタイマーで透明度を加算・減算してフェードIN・OUT表現と、表示時間を調整してました。VB↓
PrivateSubTimer1_Tick(senderAsObject,eAsEventArgs)HandlesTimer1.Tick'Timer intavalは20?位だったはずMe.ticks.Text=CInt(Me.ticks.Text)+1SelectCaseCInt(Me.ticks.Text)CaseIs<=100 Me.Opacity+=0.01'2秒かけてフェードINCase101To300'4秒間通常表示Case300To400'2秒かけてフェードOUTMe.Opacity-=0.01CaseIs>400'終わったら終わるMe.ticks.Text="0"Me.Timer1.Enabled=FalseMe.Hide()CaseElseEndSelectIfMe.sec.Text<>Mid(Now.ToString("yyyyMMddHHmmss"),13,2)ThenCallMakeClockImage()'お知らせ内にアナログ時計描画Me.sec.Text=Mid(Now.ToString("yyyyMMddHHmmss"),13,2)EndIfMe.Refresh()EndSub
当初NotifyIcon用にインストールしたHardcodet.NotifyIconにある機能を使おうかと考えたんですが、お知らせ画面内のアナログ時計をリアルタイムで動かしたいので、VB版と類似した方法で行くことにします。
GRIDVIEWでの残念な点
個別設定した時報情報をリスト表示する機能で、FORMS版のLISTVIEWでは普通にIMAGELISTを準備して、AddItemするといい感じでアイコンをつけて登録でき、削除するときもマウスポインタで領域選択することで一気に削除できました。
WPF版ではGridviewを利用してXAML側でアイコンをつけて表示してるんですがマウス操作するとDragMoveが生きちゃってそうした選択ができず、クリックしての選択しかできないっぽくてやや残念。
追記 プレデター文字
DrawLineでセグメント数字描画するロジック、ミスったらいきなりプレデター風味に。そういえばゲームが出るんたっけ・・。