获取分辨率

一、获取分辨率

        使用getSize() 办法

[java]  view plain copy print ?
  1. Display display = getWindowManager().getDefaultDisplay();  
  2. Point size = new Point();  
  3. display.getSize(size);  
  4. int width = size.x;  
  5. int height = size.y;  
        如果不在 Activity 内可以通过 WINDOW_SERVICE 来获取 Display 对象  
[java]  view plain copy print ?
  1. WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);  
  2. Display display = wm.getDefaultDisplay();  

        使用DisplayMetrics 对象来获取

[java]  view plain copy print ?
  1. DisplayMetrics dm = new DisplayMetrics();  
  2. getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3. int width = dm.widthPixels;  
  4. int height = dm.heightPixels;  



二、虚拟按键的情况下获取物理分辨率
       如果是4.0以上的系统,而且屏幕是带有虚拟按键的上面的代码获取的屏幕分辨率是除去虚拟按键以外的,在有虚拟按键情况下比如分辨率是:800×480 ,上面代码获取的是:480×728。那在带有虚拟按键的情况下如何获取真正的分辨率,可以使用display.getRealSize()  
[java]  view plain copy print ?
  1. Display display = getWindowManager().getDefaultDisplay();  
  2. Point outSize = new Point();  
  3. display.getRealSize(outSize);  
  4. int width = outSize.x;  
  5. int height = outSize.y;  
在Qt中,不同版本和不同系统下获取屏幕分辨率的方法有所不同: - **Qt5及之后版本**:由于在Qt5.0之后,`QDesktopWidget` 类逐步被淘汰,建议使用 `QGuiApplication` 类或 `QScreen` 类的方法来获取屏幕分辨率。 - **获取主屏分辨率**: ```cpp #include <QGuiApplication> #include <QRect> #include <QDebug> // ... QRect mRect; mRect = QGuiApplication::primaryScreen()->geometry(); qDebug() << "width:" << mRect.width() << " height:" << mRect.height(); ``` - **多屏幕分辨率获取**: ```cpp #include <QGuiApplication> #include <QScreen> #include <QList> #include <QRect> // ... QList<QScreen *> screenList = QGuiApplication::screens(); QList<QRect> rectList; for(int i = 0; i < screenList.size(); i++){ rectList.append(screenList.at(i)->geometry()); qDebug() << "Screen " << i << " width:" << rectList.at(i).width() << " height:" << rectList.at(i).height(); } ``` - **旧方法(不推荐在Qt5及之后版本使用)**:在旧版本中,常使用 `QDesktopWidget` 类获取分辨率。 ```cpp #include <QApplication> #include <QDesktopWidget> #include <QRect> void GetScreenInfo() { QDesktopWidget* desktopWidget = QApplication::desktop(); // 获取设备屏幕大小 QRect screenRect = desktopWidget->screenGeometry(); int screenWidth = screenRect.width(); int screenHeight = screenRect.height(); // 获取系统设置的屏幕个数(屏幕拷贝方式该值为1) int screenCount = desktopWidget->screenCount(); } ``` - **不同系统下的特定方法**: - **Windows系统**:可以使用 `GetSystemMetrics(SM_CXSCREEN)` 和 `GetSystemMetrics(SM_CYSCREEN)` 获取分辨率。 - **Linux系统**:可以使用 `XDisplayWidth` 和 `XDisplayHeight()` 获取分辨率 [^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值