問題タブ [dpi-aware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - モニターごとの DPI 対応 MFC コンポーネント
多大な努力を払って、MFC アプリケーションを begin から に移行しSytem DPI aware (High DPI aware)
ましたPer Monitor High DPI Aware
。ダイアログ ボックス、メッセージ ボックスなどのように使用した MFC コンポーネントはまだper-monitor-dpi aware
ではなく、 であるかのように動作しますsystem-dpi aware
。Windows DPI 仮想化がなくなったので、マシンのモニターごとに異なる DPI スケーリングを使用すると、これらのコンポーネントの表示がさらに悪化します。
たとえば。
2 台のモニター M1 (3840x2160 with150% dpi scaling
) と M2 (1280x1024 with100% DPI scaling
) を検討してください。アプリが M2 で実行されると、M2 に収まっていた色を選択するためのダイアログ ボックスが収まりません (以前の Windows OS では、DPI 仮想化のために縮小されていました)。
Windows 8 以降に導入された、モニターごとの dpi 対応の新しい MFC コンポーネントはありますか? たとえば。のDIALOGEX2
代わりにDIALOGEX
?
c# - DPI 対応のマニフェストが埋め込まれていない
私は想像できるすべてを試しました。exe内のマニフェストにDPIaware設定を埋め込むことを単に拒否するwinformがあります。exe を別のマシンにコピーして実行するときは、マニフェストをコピーする必要があります。そうしないと、適切にスケーリングされません。ターゲット (コピー先) マシンにマニフェストを追加すれば、問題ありません。(ターゲット マシンから) マニフェストを削除すると、アプリの自動スケーリングに失敗します。
プロパティ タブで既にマニフェストを選択しています。私はすでにマニフェストを「埋め込みリソース」に設定しています。私は文字通り私が研究したすべてを試しました。何も機能しません。
マニフェスト (DPIaware 設定を使用) を exe にコンパイルして、毎回 exe.manifest をコピーする必要がないようにするにはどうすればよいですか?
c# - C# を使用して macOS で高 dpi コンソール アプリケーションを作成する方法 (可能な場合)?
フラクタルを構築する単純な c# コンソール アプリケーションがあります。macOS で Visual Studio Community を使用しています。特定のサイズ (wxh) のビットマップを作成します。.SetPixel
計算されたマンデルブロ数に基づいて、ピクセルごとに色が割り当てられます。
高 dpi の Retina 画面を使用していて、ビットマップが非常にピクセル化されていることを除いて、これは正常に機能します。
私は次のようなことを試しました:
dpi を取得しますが、これは画面ではなく の解像度である 96 にForm
なります。
bm.SetResolution(144.0F, 144.0F);
ビットマップを作成した直後に試しましたが、成功しませんでした。
hereのようなより複雑なアプローチを試みましたが、プログラムがクラッシュするだけです。おそらく(?)私はmacosを使用しているため、.dllのようなロードを提案するすべてのソリューションが機能しませ[DllImport("user32.dll")]
んSystem.DllNotFoundException: user32.dll
。
this.AutoScaleDimensions = new System.Drawing.SizeF(200F, 200F);
を初期化するメソッドに追加してみましたForm
。
WPFに切り替えることでさえも、macOS で可能な場合でも問題があるようです。C# を使用してそれが可能かどうか疑問に思っていますか?
プログラム全体を Retina dpi 用にレンダリングする必要はありませんが、ピクセルごとにビットマップを作成するには、おそらく高解像度の画像を取得するための別のアプローチが必要ですか? ビットマップを単純に小さくすることは許容されますが、解像度は高くなります。もちろん、最もForm
優れた解決策は、アプリケーション全体を次のように書き直すことなく、画面で使用可能な dpi に基づいて、高 dpi 解像度で数行のコードを使用して完全なアプリケーションを作成することです。
.NET のドキュメントは本当に役に立たないので、誰かが解決策を持っていることを願っています。
PS: 投稿に反対票を投じるだけでなく、投稿に対する批判を聞きたいと思います。重複ですか?何時間も探し続けてきた答えがどこにあるのかと聞いて嬉しく思います。もっとコードが必要ですか?喜んで提供します...