【C#】高解像度で文字がにじむ問題
いま、アプリを作るシステムをバージョンアップしています。
皆さん、Excelのバージョンを上げると、過去のファイルが開けるかどうか心配になったりしますよね。
そんな感じでプログラム環境のバージョンアップもなかなか不安なものなのです。
しかも、VisualStudio2005 → VisualStudio2019という大幅アップの移行なのでドキドキです。
幸い、多少のエラーが出たものの、ちょっとした設定で済みました。
VisualStudio(マイクロソフト)が用意した部品だけ使って、余計な外付け部品を使っていなかったのも良かったようです。
そんな中、アプリ画面の文字がにじむ問題がありまして。
古いプログラム環境で作られたアプリは、Windows10などの高解像度のPCで見ると文字がにじんでしまうってやつです。
よく、新しいPCで古いソフトなんかを利用するとおこる現象です。
この問題、今まではユーザーさんにお手数をかけていたのですよ。ダウンロード後、アプリを起動する前にプロパティ設定で高解像度の欄にチェックを入れてもらっていました。
古いプログラム環境で作られたアプリの問題なので、こちらのプログラム環境をバージョンアップすれば解消すると思っていたのですが、どうやらそれだけでは解消しないようで。
難儀しましたが、2019年の記事に解消方法が記載されていました。
ありがたいですねぇ。
そんなわけで、備忘録も兼ね、他にも困っておられる方の参考になればと当記事で広めたいと思います。
【高解像度で文字がにじむ問題の解消方法】
参考にしたURLです。→ https://www.kobiwa.jp/2019/09/11/post-672/
・フォーム起動時にWin32APIのSetProcessDPIAware()を実行する、という方法です。
1.classの中(main()の外)で以下を定義します。[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
2.フォームのmain()メソッドの中でフォームのコンストラクタを呼び出す前に、SetProcessDPIAware()をコールします。
最初のフォームにこの処理を施しておけば、後続のフォームもきれいに表示されます。
ちなみにマニフェストファイル(app.manifest)を追加する、という方法もあるようですが、ウチの現象ではこれでは解決できませんでした。試される方はマニフェストファイルを先に試されたほうが良いのかもしれません。
あぁ、早くこの処理を対応したアプリをUPしたいものです。
この記事が気に入ったらサポートをしてみませんか?