不同分辨率不同DPI下的自适应

WPF应用程序在不同分辨率下要做到自适应需要一般可以在前台使用ViewBox作为最外层容器,里面使用一个固定尺寸的容器。在后台需要动态设置窗体的尺寸,宽度和高度设置我这里采用静态类静态方法来调用:

public class WindowUtil{const double DpiPercent = 96;/// <summary>/// 获取自适应窗体宽度/// </summary>/// <param name="sourcewidth">窗体原宽度</param>/// <returns>自适应宽度</returns>public static double GetAutoWidth(double sourcewidth){if (IsDpiChanged() == false){return sourcewidth * SystemParameters.PrimaryScreenWidth / 1920;}else{return sourcewidth * GetScreenWidth() / 1920 ;}}/// <summary>/// 获取自适应窗体高度/// </summary>/// <param name="sourceheight">窗体原高度</param>/// <returns>自适应高度</returns>public static double GetAutoHeight(double sourceheight){if (IsDpiChanged() == false){return sourceheight * SystemParameters.PrimaryScreenHeight / 1080;}else{return sourceheight * GetScreenHeight() / 1080;}}/// <summary>/// DPI是否更改/// </summary>/// <returns></returns>private static bool IsDpiChanged(){using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero)){float dpiX = graphics.DpiX;float dpiY = graphics.DpiY;if (dpiX != DpiPercent && dpiY != DpiPercent){return true;}else{return false;}}}/// <summary>/// 获取相应DPI下的屏幕高度/// </summary>/// <returns></returns>public static double GetScreenHeight(){double height = 0;var screen = Screen.FromHandle(IntPtr.Zero);using (Graphics currentGraphics = Graphics.FromHwnd(IntPtr.Zero)){double dpiXRatio = currentGraphics.DpiX / DpiPercent;double dpiYRatio = currentGraphics.DpiY / DpiPercent;height = screen.Bounds.Height / dpiYRatio;}return height;}/// <summary>/// 获取相应DPI下的屏幕宽度/// </summary>/// <returns></returns>public static double GetScreenWidth(){double width = 0;var screen = Screen.FromHandle(IntPtr.Zero);using (Graphics currentGraphics = Graphics.FromHwnd(IntPtr.Zero)){double dpiXRatio = currentGraphics.DpiX / DpiPercent;double dpiYRatio = currentGraphics.DpiY / DpiPercent;width = screen.Bounds.Width / dpiYRatio;}return width;}
}

不同分辨率不同DPI下的自适应相关推荐

  1. 不同DPI下窗体的自适应的有关注意点(转)

    不同DPI下窗体的自适应的有关注意点(转自:http://hi.baidu.com/superkinger/blog/item/79e047ec6c80563526979197.html) 1.    ...

  2. 像素、分辨率、DPI、PPI

    像素.分辨率.DPI.PPI 前言 目前绝大部分显示器都是基于点阵的,通过一系列的小点排成一个大矩形,通过每个小点显示不同的颜色来形成图像,我们把每个小点称为一个像素 (pixel). 概念点 Dot ...

  3. 双光子荧光成像_在不影响分辨率的情况下,成功将双光子显微镜成像速度提高5倍!...

    看更多大美宇宙科学博科园 科学家开发出了一种方法,可以在不影响分辨率的情况下将双光子显微镜成像速度提高五倍!这种创纪录的成像速度将使科学家们,能够观察到以前过于短暂而无法用当前最先进显微镜成像的生物现 ...

  4. 解决VS在高DPI下设计出的Winform程序界面变形问题

    解决VS在高DPI下设计出的Winform程序界面变形问题 参考文章: (1)解决VS在高DPI下设计出的Winform程序界面变形问题 (2)https://www.cnblogs.com/BenP ...

  5. java 改像素不改尺寸_如何不改变分辨率的情况下缩小尺寸PNG图片

    有的地方(比如腾讯自制APP的图标)对上传的图片不仅有格式的限制,并且还有分辨率和大小的限制,那要如何在不改变格式和分辨率的前提下,缩小图片大小呢? 通常来说,要把一张图片缩小,可以减小它的尺寸,或者 ...

  6. 【Android 屏幕适配】屏幕适配基础概念 ② ( 像素 px 与 密度无关像素 dip | 像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 )

    文章目录 一.像素 px 与 密度无关像素 dip 二.像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 ...

  7. 分辨率、DPI、PPI和屏幕尺寸,你都知道是啥么?

    分辨率.DPI.PPI和屏幕尺寸 分辨率 DPI/PPI 坑爹的屏幕尺寸 Reference 手机开发中不免会遇到分辨率.DPI.PPI和屏幕尺寸等术语,那就弄弄清楚这些概念的真正含义. 分辨率 分辨 ...

  8. 像素、分辨率、dpi的通俗理解

    一张单反相机拍摄照片的详情 属性 值 分辨率 6960 * 4640 宽度 6960像素 高度 4640像素 水平分辨率 72dpi 垂直分辨率 72dpi 像素 px(pixel),可以理解为一个最 ...

  9. Android 使用adb修改手机分辨率、dpi

    为了适配不同尺寸屏幕的手机,最简单的方式就是通过adb修改分辨率和dpi adb安装 Android Studio 安装adb(Android Debug Bridge) adb修改size 查看分辨 ...

最新文章

  1. 分配性质是什么意思_苏教版六年级数学上册3.9按比分配问题(1)微课视频 | 练习...
  2. 云原生生态周报 Vol. 11 | K8s 1.16 早知道
  3. 2020 ICPC亚洲区域赛(沈阳)H-The Boomsday Project(双指针+dp)
  4. 关于vh和 calc
  5. 给php添加标题的代码,纯代码给WP网站的分类和Tag页面添加自定义标题
  6. leetcode:Excel Sheet Column Number
  7. go mysql 条件查询_go-sql-driver包 实现mysql不定字段查询
  8. eclipse中汉字对齐错误
  9. 2019年PMP考试模拟题(附答案解析)
  10. python的if条件语句的用法及实例
  11. 基于SpringBoot的宠物医院管理系统JAVA MYSQL
  12. 【报告分享】 2020国人旅游出行研究报告-企鹅智库(附下载)
  13. 从零学光学设计 zemax中的三种优化
  14. 已知棱长求三棱锥的表面积和体积
  15. 计算机cad实训日记,cad制图实习日记范文
  16. quick Cocos2dx lua 接anysdk
  17. mxnet-lst文件
  18. 雅思口语怎么备考?哪里有免费的题库?
  19. windows注册表_改进Windows的20个最佳注册表技巧
  20. 浅析漫谈EOS之存储

热门文章

  1. 可以对任意有规律可循的静态内容进行排序的Jquery插件
  2. 30组易混易错词汇辨析,柯桥成人英语培训哪家好
  3. LeetCode之Candy
  4. 技巧篇:scanf触发malloc_consolidate进行unlink(chunk size限制得到极小的chunk)
  5. ArcGIS Engine开发系列:将地图导出为图片的两种方法
  6. php日常工作便签源码,php便签
  7. Caught exception while allowing TestExecutionListener spring-mvc 单元测试出现的问题
  8. Hadamard正交编码+BPSK误码性能分析
  9. Hadamard Test
  10. 米家电磁炉开机键失灵修复记