当前位置: 首页 > news >正文

蒲城网站建设温州网站开发平台

蒲城网站建设,温州网站开发平台,网赌代理,互联网一二线大厂名单论wpf的设备无关性 - 简书 原文:论wpf的设备无关性 - 简书 WPF从发布之日起#xff0c;一直将“分辨率无关(resolution independence)”作为其亮点#xff0c;声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。微软之所以称WPF… 论wpf的设备无关性 - 简书 原文:论wpf的设备无关性 - 简书   WPF从发布之日起一直将“分辨率无关(resolution independence)”作为其亮点声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。微软之所以称WPF具备“分辨率无关”这一特性主要是因为WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位而不是与设备相关的像素单位。 但是微软本身对WPF“分辨率无关”这一特性没有作更多的具体解释导致用户会产生很多误解。 误解之一 改变显示器的分辨率设置同一个WPF的用户界面和绘制的图形尺寸不会变化。 这个可以用一个非常简单的实验证明该结论是错误的。新建一个WPF应用程序窗口其中高度为400DIUsDIUDevice independent unit设备无关单位宽度为600DIUs让这个窗口分别在分辨率设置为1280 * 1024和800*600的环境下运行如下图所示两个窗口的尺寸是明显不一样的。 图 1 左图为1280 * 1024分辨率右图为800*600分辨率   误解之二   改变显示的DPI设置同一个WPF的用户界面和绘制的图形尺寸不会变化。 显示的DPI设置在XP系统下是通过右键——属性——设置选项卡——高级可以调用出来如下图所示 图 2 显示属性DPI设置 这个也可以用同样的方法进行证明该结论是错误的。仍然是高度为400DIUs[1]宽度为600DIUs的窗口分别运行在96DPI和192DPI两种设置环境下。从下图也可以明显看出窗口的尺寸是不一样的。 图 3 左图为96DPI右图为192DPI       在不同屏幕上如果DPI设置相同则同一个WPF的用户界面和绘制的图形尺寸不会变化。 在这个地方有必要对屏幕的DPI设置进行一下解释说明。DPI设置是指屏幕上每英寸多少个像素比如当前设置为96DPI即屏幕上96个像素为1英寸。一般的Windows XP系统有正常尺寸96DPI、大尺寸120DPI和自定义尺寸三种选项。既然WPF的坐标单位是以1/96英寸为一个逻辑像素单位那么我们有理由相信如果两个显示器的DPI设置是相同的那么同一个WPF的用户界面和绘制的图形尺寸不会变化。很遗憾这样的结论依旧是一个错误。 CalvinP.Schrotenboer 也用一个实验证明这是一个错误。实验环境如表 1比如桌面LCD显示器实际屏幕宽度和高度像素单位为1600 x 1200这个和普通的分辨率设置需要区分这是显示设备的最大分辨率或者说是物理分辨率即物理上该显示器屏幕上是1600 x 1200个像元英文中又称这种分辨率为“native resolution原生分辨率”。由于两个屏幕物理尺寸也不一样所以实际的物理DPI可以通过表中的计算公式得到。实际的物理DPI和操作系统的DPI设置是没有什么联系的。 表 1实验环境   在两个不同系统当中运行同一个WPF应用程序该程序了绘制了一条长为384DIUs的直线换算成英寸即为384/96 4英寸。结果在两个系统当中的实际尺寸如下图所示 图 4 上图实际尺寸为4.08英寸下图实际尺寸为3.28英寸(CalvinP.Schrotenboer,2006)   问题出在哪儿了 其实从表 1当中就能看出一些端倪原因正是在于实际的物理DPI和操作系统设置的DPI不一致造成的。WPF无法知道当前使用设备实际的物理DPI为多少相反通过操作系统的API函数获得操作系统的DPI值然后简单地认为这就是实际的物理DPI值。比如在桌面LCD显示器上实际一个物理像元的尺寸为1/94英寸由于操作系统设置为96DPI因此WPF还固执地以为一个实际的像元为1/96英寸因此线段长度为1/94 * 384 4.08英寸。笔记本显示器实际一个物理像元的尺寸为1/117英寸因此线段长度为1/117 * 384 3.28英寸。这个值和我们测量的结果正好相符。 那么我们有理由推测如果将操作系统的DPI设置成实际的物理DPI则能做到真正的“分辨率独立”即在两个不同显示器上显示的线段长度都为4英寸如图 5所示 图 5 左图为桌面LCD显示器将DPI设置成为94右图为笔记本显示器将DPI设置成为117 WPF的“分辨率无关”到现在为止已经是山高月小水落石出。那么我们还要接着讨论另一个问题在显示器上存在这样的问题那么是否在打印机上也存在这样的问题呢仍然可以用一个实验证明。同样绘制一个4英寸的直线分别在DPI设置为96DPI和120DPI下进行打印得到的打印结果尺寸相同。如下图所示 图 6 左图为系统设置120DPI下打印结果右图为系统设置96DPI下打印结果   结论 通过上面几个实验分析我们可以得到如下两个结论 1              WPF在打印得时候可以做到“分辨率无关”即同一个WPF用户界面和绘制的图形尺寸在任何一台打印机上输出都是一致的 2              当显示器实际象元的物理尺寸和系统设置的DPI保持一致的时候WPF可以在显示器上做到“分辨率无关”即同一个WPF用户界面和绘制的图形尺寸在任何一台显示器实际象元的物理尺寸和系统设置的DPI保持一致上输出都是一致的。反之则无法保证。 更多的讨论 “分辨率无关”这样一个概念由于微软本身讨论得不多的确容易造成误解。最为详细地讨论了WPF当中“分辨率无关”的是CalvinP.Schrotenboer 的一篇博文“Is WPF Really Resolution Independent?”。当然Charles Peztold也在自己的博客当中讨论过这个问题。另外在微软的论坛上StephenWCharles Peztold等人也就WPF的“分辨率无关”和“设备无关”作了比较深入的讨论。 用户固然可以不理睬这些但是对于一个程序员来说尤其是一个正在做绘图程序的程序员尤其尤其是一个还需要打印输出的绘图程序员是需要清楚这其中细节的。而且了解细节本身也是一件很愉快的事情。 作者yang13链接https://www.jianshu.com/p/5d56826d36e0来源简书简书著作权归作者所有任何形式的转载都请联系作者获得授权并注明出处。 posted on 2019-03-27 23:37 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/10612083.html
http://www.yutouwan.com/news/25783/

相关文章:

  • 金融网站建设网专注建设高端网站
  • 小说网站开发项目简介基于asp的网站设计与实现
  • 网站怎么做微信支付wordpress 网站 上传
  • 建站软件可以不通过网络建设吗想做网站的公司
  • 免费网站一级a做爰在免费线看wordpress nginx配置ssl
  • 商洛做网站网站开发的费用
  • 网站内部优化怎么做用安卓做网站
  • 建设银行无锡分行网站wordpress appcan-wp
  • 公司内部网站怎么建设南京seo关键词排名
  • 如何开发wordpress潍坊网站优化
  • 互联网行业网站设计周口集团网站建设
  • 域名备案好了怎么建设网站长沙网站建设服务公司
  • 相亲网站做期货现货贵金属的人博客做资讯类网站
  • 怎么弄自己的网站卖东西信誉好的丹阳网站建设
  • 网页设计需求分析搜狗seo快速排名公司
  • 教育类网站模板最新软件开发国家标准
  • 武昌做网站多少钱asp网站后台制作
  • 用户上传网站用什么做做企业网站收费价格
  • 广州高端品牌网站建设后台管理便捷石家庄简单的网页制作
  • 家具展示网站源码附近有木有做网站
  • 网站如何做付费wordpress download monitor
  • 张家界网站建设要求网站维护是怎么回事
  • 做软件下载网站有哪些网站建设 岗位
  • 地方网站做哪些内容投诉网站建设
  • 做印刷品的素材网站安阳如何优化网站
  • 安徽整站优化装修公司报价
  • 平顶山河南网站建设wordpress 网校插件
  • 张家界城乡建设网站广州市黄埔区建设局网站
  • 衡阳市建设局网站淄博网络宣传
  • 上海网站建设 普送vi设计公司排行榜