「WPF」に関する日記

UseLayoutRounding(Today I Learned)

FrameworkElement.UseLayoutRounding プロパティ (System.Windows) | Microsoft Learn
WPFでUI要素をピクセル境界に合わせるSnapsToDevicePixelsプロパティがうまく効いてない場所があるなーと思って調べていたら、似た役割のUseLayoutRoundingを見つけました。
SnapsToDevicePixelsは指定した要素自身をピクセル境界に合わせ、UseLayoutRoundingは子要素のレイアウトをピクセル境界に合わせるということかな。
ただ、子要素の相対位置をピクセル単位に合わせるという動作らしく、指定した要素自身がピクセル境界からずれていると意味がないようです。
だから、Windowとかの一番外側の要素に指定して、あとは余計な指定をせず継承するに任せておくという運用がいいのかな。
WPF版ふにゃでもぼやける部分があったんで、これで対策できないか試してみたいところです。

アンパンマンDBとDPIAware

アンパンマンDB(記事更新)

来週の放送情報。
再放送ですね。

DPIAware

いつぞやの高DPI対応、ちゃんとドットバイドットで表示させたいアプリ作りたくなってきたので、本格的にあれこれ試してみようかなと思ってます。
考えているユースケースがサブモニター用なので、しっかりとPerMonitorV2に対応させていきたいところ。
まずは単にDPI無視(拡大率によらず同じドット数で表示され、見た目の大きさがモニタごとに違う)から始めようかと。
一応、WPFでやるつもりです。

WPF

高解像度のモニタを買って拡大率の設定を上げたら自作のソフトが軒並みぼやけたので、Windows Formsから高DPIに標準対応してるWPFに変更するのを検討中。
UI全部作り直しだし、古くてモチベないやつもあるけど、簡単そうなのからやっていきたいとか思っています。
そういえばWPFより新しいC#向けのUIフレームワーク、あったよな…。
UWPはUI以外も全面的に変更になるしWPF以上に未来なさそうだから除外するとして。

WPFのコンテキストメニューとポケモンピクロスとPHP-CS-Fixer

WPFのコンテキストメニュー

Sukeruに使ったWPFのコンテキストメニューのことを、プログラミングのページに記載しました。
結論としては「マニュアル読め」ってことなんですが、難しくないですよと言う紹介程度で。

ポケモンピクロス

ポケモンピクロスのページも準備中。
リリースから期間が経ってるし私も完全クリア済みだし、あまり多くは語らず、軽い紹介と自分の記録程度にしようと思います。

PHP-CS-Fixer

で、上記2つの更新をするときにはPHPファイルを触っているわけですが、Visual Studio Code上で編集するようになって、PHP-CS-Fixerで整形するようにしたので、TGWSWebAdminと同じく、.php_csファイルで整形のルールを指定することにしました。
今の.php_csファイルはこんな感じ。
厳しめなSymfonyルールを基本として、配列を省略表記して、PHPDoc関連は若干緩めています。