1

CDC (MFC クラス) MFC クラス メンバー関数 DPtoHIMETRIC() 機能は、Windows 7 と Windows XP で異なりますか?? 以下はサンプルコードです。

//HIMETRIC 単位で外接する四角形を計算します //論理単位 = 0.01 mm で、lpDrawItemStruct の値は関数の引数として渡されます

CDC pDC= CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->SetMapMode(MM_HIMETRIC);
CSize wh(rc.Width(),rc.Height());
pDC->DPtoHIMETRIC(&wh);
int x = wh.cx;
int y = wh.cy;

変換後、Windows XP の値 (x と y) は Windows 7 で異なります。そのため、機能が影響を受けています。この問題を処理する上で、ご提案やご意見をお寄せください。

参考: CDC クラスの場合 http://msdn.microsoft.com/en-us/library/fxhhde73(v=vs.80).aspx DPtoHIMETRIC の場合 http://msdn.microsoft.com/en-us/library/h6e91ee5 (v=vs.80).aspx

4

1 に答える 1

4

リンクされた MSDN の記事から:

変換は、物理的なインチのピクセル数に基づいています

これは、ビデオ アダプターの DPI 設定の影響を受けます。はい、Windows 7 では変更が非常に簡単なため、一般的に高くなります。

ここに画像の説明を入力

[カスタム テキスト サイズ (DPI) の設定] リンクでは、次のものが生成されます。

ここに画像の説明を入力

設定をリセットすると、プログラムが再び正しく動作する可能性があります。または、それを大きくすると、Windows は古い非 DPI 対応アプリを 150% でスケーリングし始めます。あいまいな出力を生成するという犠牲を払って。もちろん、これらは実際の修正ではありません。さまざまな DPI 設定でグラフィックをスムーズにスケーリングするコードを作成するには、作業が必要です。

于 2012-12-03T13:07:26.137 に答える