掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ディスプレイの拡大率の取得 (ID:150362)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private 宣言 } //DPIが変更された時 procedure DPIChanged(var msg:TMessage);message WM_DPICHANGED; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var h:THandle; dc:HDC; dpi,rate:Integer; begin h:=GetDesktopWindow(); dc:=getdc(h); dpi:=GetDeviceCaps(dc,LOGPIXELSX); ReleaseDC(h,dc); Memo1.Lines.Add(inttostr(dpi)+'dpi'); //96dpiで100%、120dpiで125%、144dpiで150%、192dpiで200% //よって96で割れば拡大率が出るらしい rate:=dpi*100 div 96; Memo1.Lines.Add(IntToStr(rate)+'%'); end; procedure TForm1.DPIChanged(var msg: TMessage); var dpi,rate:Integer; begin dpi:=msg.WParam shr 16; Memo1.Lines.Add(inttostr(dpi)+'dpi'); //96dpiで100%、120dpiで125%、144dpiで150%、192dpiで200% //よって96で割れば拡大率が出るらしい rate:=dpi*100 div 96; Memo1.Lines.Add(IntToStr(rate)+'%'); end; end. ではダメでしょうか。外していたらすいません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.