問題タブ [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.

0 投票する
1 に答える
338 参照

c# - DPI スケーリング >= 150% の高 DPI リソースをロードする NotifyIcon を取得できません

私のアプリケーションは DPI 対応です。完全なマニフェストは次のとおりです。

そして、NotifyIconアイコンのプロパティを次のように設定しています。

ただし、これは Windows 8.1 システムで 150% 以上の DPI スケーリングでは機能しません。100% に設定するとSystemInformation.SmallIconSize16x16 サイズ (正しい) が報告され、125% に設定すると 20x20 サイズ (正しい) が報告されます。たとえば 150% を超えると、24x24 サイズが報告されるはずですが、代わりに 16x16 が報告され、間違った解像度が読み込まれます。私のアイコンファイルから。

次の記事 ( http://blog.quppa.net/2011/01/07/small-icon-size-dpi-in-windows/ ) を読むと...

WPF と WinForms はどちらも、引数 SM_CXSMICON (小さいアイコンの幅) と SM_CYSMICON (小さいアイコンの高さ) を受け取る Win32 GetSystemMetrics 関数をラップします。

つまり、おそらく自分自身を呼び出す必要はありませんGetSystemMetricsよね?

どうすればこれを解決できますか?

PS: 私が開発中のオープンソース アプリケーションについて話しているので、完全なソース コードを詳しく調べたい場合は、こちら で確認できます

0 投票する
3 に答える
27024 参照

java - Java 無効化 dpi 対応が機能しない

引数を指定して Java アプリケーションを実行しようとしてい-Dsun.java2d.dpiaware=falseますが、何も起こりません。

UI がぼやけていることを期待していますが、通常のサイズのアイコンとフォントでは、このフラグは機能しないようです。

Windows 8.1 で JDK 1.8.0_45 を使用しています。

このバグhttps://bugs.openjdk.java.net/browse/JDK-8080153を見つけましたが、回避方法がわかりません。

0 投票する
2 に答える
1895 参照

windows - Windows コモン ダイアログを「モニターごとの DPI 対応」にする

MFCを使用してVS2008で作成されたプログラムがあります。これで、「モニターごとの DPI 対応」に変更して、ほぼ完了です。マニフェストを変更し、WM_DPICHANGE メッセージを処理しました。しかし、まだ 1 つの問題があります。

CFileDialogクラスを使用して開く/保存ダイアログを表示し、 SHBrowseForFolder関数を使用してフォルダー選択ダイアログを表示しました。ただし、これらのダイアログはすべて「モニターごとの DPI 対応」ではありません。DPI 設定が異なるモニター間でダイアログを移動しても、UI は調整されません

これらのダイアログのメッセージを監視するためにスパイ++を使用しています.WM_DPICHANGEDメッセージを受信できることがわかりましたが、それを処理していません.

また、Windows 10 の notepad.exe でファイルを開くダイアログをテストしたところ、完全に機能しました。

これらのダイアログを「モニターごとの DPI 対応」にする方法を知っている人はいますか?

--------編集--------

さらに 2 つの問題があります。

  1. ウィンドウを異なる DPI のモニターに移動すると、ウィンドウのサイズは自動的に変更されますが、タイトル バーの高さとタイトルのフォント サイズは変更されません。
  2. チェックボックス コントロールのボックス サイズも変更されません。

これらの問題には何らかの関連があるのではないかと思いますが、わかりません。

--------悲しいニュース--------

Microsoft の「DPI チュートリアル サンプル」を VS2013 でコンパイルしましたが、同じ問題が発生しました。

https://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744

0 投票する
2 に答える
10070 参照

wpf - 私の WPF アプリは、すぐに使用できるモニターごとの dpi 対応です。私はそれを期待していませんでしたか?

WPF のモニターごとの dpi 対応について少し混乱しています。さまざまなモニターでウィンドウを適切にスケーリングするには、いくつかの作業を行う必要があると思いました (モニターごとの DPI 対応 WPF アプリケーションの開発で説明されているように)。

しかし、2 台のモニター (2560x1440 と 2160x1440) を備えた PC でアプリを実行したところ、ダイアログをモニター間で移動すると、ダイアログが自動的にスケーリングされます。それは最新のファスト リング Windows 10 にあります。

0 投票する
0 に答える
544 参照

c++ - dpi 非対応プロセスの dwm の倍率を取得するにはどうすればよいですか?

コントロールのサイズと位置は、ウィンドウ (dwm) によって変更されます。これを相殺するために、x と y の正確なスケーリングを取得する方法が必要です。

.exe (3ds Max)へのプラグインを作成しているため、マニフェストを使用できません。3dsMax のマニフェストを変更できません (私はオートデスクではありません。setprocessdpiawareness()別のプラグイン (dll)exeであり、親プロセスのレイアウトを強制終了するため、 を呼び出すことはできません。

このソリューションは Windows 7、8、10 で動作するはずです。そのため、10 または 8.1 で導入された呼び出しは使用できません。

私はすでに試しました:

これは何も変更しません (ポイントは変更されません)。私は古い学校の C++ と一般的なコントロール (サブクラス化) を使用しています。親exeで実行されないため、WPFを使用できないため、WPFはありません。

コントロールのサイズと位置に魔法の「2 *」を追加した後、必要な場所に配置します。しかし、これは現在のモニターを備えた現在のマシンでのみ機能するハックです。

「2」を dwm が適用する乗数に置き換えたいと思います。

0 投票する
2 に答える
1210 参照

winforms - コントロール スクロールバーの幅の設定/スケーリング

モニターごとの DPI が変更された場合 ( WM_DPICHANGEDmessage )、リスト ビュー、ツリー ビュー、リッチ エディット、リストボックスなどのコントロールの組み込みスクロールバーは (予想どおり) スケーリングされません。

スケーリングされていないスクロールバー

プログラムでスケーリングする必要があります。

スクロールバーのサイズを設定するためのAPIは見つかりませんでしたが(Win32でも、WinFormsでも)。

スクロールバーのサイズ (幅) を設定するには、どの API を使用できますか?

または、少なくともスクロールバーのハンドルを取得するにはどうすればよいですか? (内部的にスクロールバーは別個の子コントロールであると想定しています) ハンドルを取得したら、MoveWindowそれを使用してサイズを変更できると想定します(編集: @Anders の回答が示すように、私の仮定は間違っていました)


背景については、「Windows での高 DPI デスクトップ アプリケーションの開発」を参照してください。


重複しているように見える質問がいくつかありますが、実際には関連するものはありません。

そこにある回答は、システム全体の設定を変更するか、DataGrid(インターフェイスで別の子スクロールバー コントロールを使用できる) のみで機能します。