WPF 与设备无关的单位】的更多相关文章

WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示.微软之所以称WPF具备“分辨率无关”这一特性,主要是因为WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位,而不是与设备相关的像素单位. 但是微软本身对WPF“分辨率无关”这一特性没有作更多的具体解释,导致用户会产生很多误解. 误解之一 改变显示器的分辨率设置,同一个WPF的用户…
原文:论wpf的设备无关性 - 简书 WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示.微软之所以称WPF具备“分辨率无关”这一特性,主要是因为WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位,而不是与设备相关的像素单位. 但是微软本身对WPF“分辨率无关”这一特性没有作更多的具体解释,导致用户会产生很多误解. 误解之一 改变…
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.很希望能够分享给大家. 本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解.本系列我希望自己也能和他一样坚持下来,每天的进步才能…
WPF单位 WPF窗口以及其中的所有元素都是用与设备无关的单位进行度量.一个与设备无关的单位被定义为1/96英寸.WPF程序统一用下面一个公式来定义物理单位尺寸: [ 物理单位尺寸(像素)] = [ 设备无关尺寸 ]*[ 系统DPI ] 我们知道标准的Windows的系统DPI是 96 dpi,这个时候物理单位就是1像素,一个40*40WPF单位的按钮,就是一个40*40像素的按钮. 但是本质上WPF的显示与显示设备有关,WPF的与设备无关的特性并不是说把WPF放到哪一个设备上显示尺寸都是一样的…
15.1 DIB文件格式(一种文件格式,扩展名为BMP) 15.1.1 OS/2风格的DIB 文件格式 字段 说明 文件头 (BITMAPFILEHEADER) 1.共14个字节 2.缩写建议用bmfh WORD  bfType 文件签名,表示位图文件,以0x4D42,即字母“BM”打头 DWORD bfSize 整个文件的大小(含文件头的大小).单位:字节 WORD  bfReserved1 以下这两个字段必须为0.鼠标指针文件,格式类似于DIB但这两个字段表示了“热点”的位置. WORD  …
设备无关位图即独立于设备的位图(DIB)与"Device-Dependent Bitmaps (DDB) 设备相关位图"相比,它不再依赖于具体的设备,从而更适合在不同的计算机之间传输和显示.它包含一个颜色表,颜色表描述像素值如何对应于RGB颜色值,其描述通过发光产生的颜色.因此,DIB可以在任何设备上实现适当的配色方案.DIB包含以下颜色和尺寸信息: 创建矩形图像的设备的颜色格式. 创建矩形图像的设备的分辨率. 创建图像的设备的调色板. 将红,绿,蓝(RGB)三元组映射到矩形图像中的像…
第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说明 hdc 设备环境句柄,可以为NULL. pInfoHdr 指向DIB信息头的指针,即BITMAPINFOHEADER fInit 0或CBM_INIT.CBM_INIT指定用后面3个参数来初始化DDB中的像素位 pBits DIB像素位的指针 pInfo DIB信息指针,即BITMAPINFO(…
设备无关图在windows上面就是一个扩展名为.bmp的文件.我们知道每一种文件都是一个二进制流,只是这个二进制流的开头几个字节是规定了文件的格式..bmp的文件格式如下 “其中信息头是windows3.0版本,扩展板,V4,V5几个版本” windows3.0该图的详细结构如下: 扩展板结构如下: V4: V5 是在V4的基础上增加了 •bv5ProfileData •bv5ProfileSize •bv5Reserved 为了理解清楚请看下图 该图的二进制数据 我们来分析一下…
15.2.1 探究DIB (1)DIB文件的结构 整个文件 紧凑DIB(整个文件除文件头) 文件头(File Header) 信息头(Information Header) 信息头(Information Header) 颜色表(Color Table) 颜色表(Color Table) 像素位(Pixel Bits) 像素位(Pixel Bits) 注意:①紧凑DIB在内存中是连续的,即整个DIB存在单个内存块中 ②DIB载入内存时,像素位与信息头可以分别存在两个内存块,即内存不连续. (2)…
对于图表控件C1Chart for WPF,我们在添加数据,选择图表类型这些基本可视化数据展示后,经常需要通过标题.坐标轴单位标签等信息辅助说明图表对实际场景的意义.C1Chart for WPF并没有按照传统WinForm的设计思想,直接暴露属性接口来设置这些信息,而是使用WPF的设计思想实现这些功能的.   事实上,C1Chart for WPF完全支持这些自定义,而且更加灵活. 下面就给出这样一个例子,用来展示如何使用C1Chart for WPF完成以上功能.   添加自定义标题 通过X…
最近项目需要需要试试采集电脑USB 设备信息 找到了 开源 示例 代码非常好  公共库也很友好  可能知名度太低   才4star https://github.com/vurdalakov/usbdevices.git 示例图 代码结构 UsbDevicesDotNet是公共库 UsbDevicesViewer是WPF界面 别的是控制台测试 获取电脑所有USB设备信息 List<UsbDevice> UsbDevices = UsbDevice.GetDevices(new Guid(Usb…
windows支持两种位图格式,DDB(device-dependent bitmap),DIB(device-independent bitmap).设备相关位图用于windows显示系统中,其图像格式与显卡格式兼容,因此显示速度很快.设备不相关位图定义了位图的文件格式,用于位图传输,由于其数据格式可能与显卡格式不一致,直接使用设备不相关位图显示图像时需要进行转换,因此显示速度较慢. 历史上显卡支持16色或者256色,分别使用4位或者8位表示一个像素颜色.在16色系统中,仅支持黑白灰,红绿蓝,…
XAML布局回顾 Grid和StackPanel是核心布局,尤其以Grid最为重要. Grid是网格布局,XAML的设计者有可能参考了Html里的Table设计了Grid布局,但进行了改进.Html中的Table是tr套td,要想变动行列非常麻烦.XAML中的Grid使用的是指定行列序号和跨行跨列数的方式,修改起来灵活方便. Grid里行或列的大小有三种方式,一种方式是固定大小(Double值),一种方式是由里面的内容决定(Auto),一种方式是按比例分割剩余空间(Double值加*,剩余空间由…
一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层: 数据层:用于存储数据,多由数据库构成. 业务逻辑层:用于编写现实的业务逻辑. 表示层:负责把数据和流程以界面显示的形式展示给用户看. 相比其他技术,WPF引入了“内置硬件加速”和“分辨率无关”等创新功能. 二.硬件加速 WPF通过DirectX执行所有WPF绘图操作,以便充分利用现代显卡的最新功…
原文:WPF的单位 屏幕 分辨率 WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素 一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有: 1.System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width System.Window…
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF .听到博客名字就懂这个人有多伟大了吧.他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.Follow他的博客也有一段日子了,很希望能够分享给大家. 本系列我不仅会翻译…
1.空白WPF项目的创建: 1)新建项目:在VS2010中,文件-新建-项目-visual c#-windows-空项目: 2)添加引用:PresentationFramework,PresentationCore,WindowsBase,System,System.Xaml,共5个.书中是4个,这是因为早期WindowsBase中的一些类后来放到了System.Xaml里. 3)添加文件:在项目中添加“新建项”,选择“代码文件". 2.SayHello程序 using System; usin…
WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素 一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有: 1.这两个方法可以返回当前屏幕选择的分辨率,该分辨率是以像素为单位,在DPI为96的情况下我们可以利用它们来做一些控件的定位,因为此时WPF单位对应一个像素,而当DPI非96…
原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术. 多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏. 此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式…
简介 WPF技术基于DirectX,完美的整合了矢量图形.2D或3D绘图技术.文件及多媒体技术.WPF将开发人员和设计人员的职责清楚的分离,提供了一种声明编程语言XAML.同时Expression Blend设计可以让界面设计更简单. WPF特点 基于矢量绘图技术:使用矢量绘图引擎,意味着可以无限放大和缩小图形. 与设备无关的单位:使用1/96的逻辑单位,这是应用程序在不同的分辨率中依然能保持良好的交互性格.传统的以像素为单位的用户界面,在不同的分辨率下会显示不同的大小. 声明式的程序设计:使用…
XAML与XML类似,就是XML延伸过来的.为了更好的表达一些功能,WPF对XML做了扩展,有些功能是WPF在后台悄悄的替你做了.有时候,虽然实现了某个功能,但是对实现原理还是很茫然.今天就讲讲XAML中赋值操作. 1 通过类型转换赋值 赋值是最简单最常见的操作,举例: <Button Width="> </Button> 这里把Width值赋值为200:用代码实现赋值,则为Button.With = 200; 这种赋值操作很直接,大家都能理解.但是仔细想想,感觉有点不对…
先搞清楚一下几个概念: DPI:dots  per  inch ,每英寸的点数.我们常说的鼠标DPI,是指鼠标移动一英寸的距离滑过的点数:打印DPI,每英寸的长度打印的点数:扫描DPI,每英寸扫描了多少个点.(更多请参考百度百科http://baike.baidu.com/view/49853.htm) 像素:pixel,picute和element的缩写.像素可以简单的理解为DPI里面的点.例如,显示器的分辨率为1024像素*768像素,就是说显示器的横向可显示1024个点(像素),纵向科研可…
如果你选择WPF,多半原因是因为折服于它那震撼性的用户体验.纵观WPF整个知识体系,其内容并不复杂,但却比较细碎,不易理清.以下内容是对WPF部分内容的简单概括,希望读者能够对WPF框架有个大体认识. 一 常用类型与继承树 WPF的常用类型如下: 二 分辨率无关性 WPF使用设备无关单位度量.一个设备无关单位被定义为1/96英寸.WPF使用下面的公式进行计算: [物理单位尺寸]=[设备无关单位尺寸]*[系统DPI] 三 WPF缺少的功能 与Windows窗体相比 缺少类似以下功能或控件:Mask…
原文:[WPF]DPI对控件定位产生的影响 需求 程序界面上是一个Window,当用户点击桌面上除此Window之外的任何地方,都要把这个window隐藏掉.程序有个托盘图标,点击托盘图标不能隐藏window,托盘上有个右键菜单,点击右键菜单也不能隐藏. 分析 1.系统像素与显示器像素 我们知道wpf中控件宽高的单位是1/96英寸,如果你系统的dpi为96(再这里我们不考虑显示器的dpi,那是windows系统的事情),那么1/96英寸就是1个系统像素.这里的像素要和显示器的像素分开.显示器的像…
WPF 中的一些图片处理方法 一,视觉处理(控件展示) 1,显示图片 Image控件展示 Xaml代码: <Image source="/Resources/Images/1.png"/> 缩放位图渲染算法 Xaml代码: <Image Source="/Resources/Images/1.jpg" RenderOptions.BitmapScalingMode="Fant"/> 枚举值 描述 Fant 使用超高质量 F…
环境Win10 VS2017 .Net Framework4.7.1   本文仅讨论在DrawingVisual中进行的画图.   WPF单位,系统DPI,显示器DPI三者的定义及关系 WPF单位:一种与设备无关的单位,以1/96逻辑英寸为一个单位,也就是说如果将一个对象的长度设为96,那么在任何设备上WPF都会试图将其显示为1逻辑英寸长. 系统DPI:将多少个显示器的像素点定义为1逻辑英寸,默认是96个点 在win10中,图中所设置的 100%即为96DPI; 125%即为120DPI; 15…
适配的基础知识 一.理解单位 px.pt.pc.sp.em.rem.dpr.dp.dip.ppi.dpi.ldpi.mdpi.hdpi.xhdpi.xxhdpi 如果你是ios开发,你需要了解的单位:pt,px,ppi:实际开发中用到的单位:pt. 如果你是android开发,你需要了解的单位:dip/dp,sp,px,dpi/ppi,ldpi,mdpi,hdpi,xhdpi,xxhdpi:实际开发中用到的单位:dp,sp. 如果你是前端开发,你需要了解的单位:px,em,rem,dpr:实际开…
首先看一个图片:   在"第一步"这个按钮周围,有一转红色,这个效果就是用WPF的位图效果实现的. 位图效果(BitmapEffect 对象)是简单的像素处理操作.位图效果将 BitmapSource 作为输入并在应用效果(如模糊或投影)之后生成新的 BitmapSource.每个位图效果都公开了控制筛选属性的属性,如 BlurBitmapEffect 的 Radius.(摘录MSDN)从上面的MSDN中看出一种效果的处理,主要有如果几种位图效果:发光效果,投影效果,模糊效果,凹凸效果…
有朋友建议我偶尔写写技术类的文章,所以我打算开始穿插性的写一些偏技术方面的科普文章,尽量往小白能看懂的方向写,今天我来讲讲UI设计中的48dp定律. 那么先说说什么是dp ?其实对于一个非技术人员要把这个概念完全搞清楚还挺复杂的,所以我们就知道他是干什么用的就好,因为安卓阵营的碎片化,所以会有杂七杂八的不同分辨率的屏幕,但是一个UI人员不可能对不同分辨率把应用的图片都切一遍吧?所以就用dp这个单位,用这个玩意儿可以保证同一个图片在不同分辨率下的屏幕上保持基本相同的物理大小. 说了dp,就得说说p…
如之前所见的大量可视化元素均有自己的尺寸大小: iOS的状态栏高度为20,所以我们需要调整iOS的页面的Padding值,留出这个高度. BoxView设置它的默认宽度和高度为40. Frame的默认Padding为20. StackLayout的默认Spacing属性值为6. 还有Device.GetNamedSize方法,该方法将Label或Button等控件中使用的NamedSize枚举值转换为不同平台对应的数值,即不同控件中不同NamedSize枚举对应的FontSize值. 然后上面那…