首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络安全
高分辨率下界面布局的解决方案3_站长心得
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

图像

图像是以光栅为基础的文件,(比如说BMP、JPEG和GIF),如图标和鼠标指针等。图像相对于字体来说要更难处理一些,因为图像是由离散的像素组成,如果当前显示分辨率和图像设计时的分辨率不一致,那么图像就需要根据正确的物理尺寸缩放,我们可以通过StrectchBlt() 函数缩放一个位图而不是BitBlt(),当图像被Load时它可以轻易的帮助应用系统缩放图像,而且更准确些。

BITMAP info;

GetObject (bitmap, sizeof (info), (PTSTR) &info);

HDC hdcBitmap = CreateCompatibleDC (target);

SelectObject (hdcBitmap, bitmap);

StretchBlt (target, x, y,

SCALEX (info.bmWidth), SCALEY (info.bmHeight),

hdcBitmap, 0, 0, info.bmWidth, info.bmHeight, SRCCOPY);

DeleteDC (hdcBitmap);

当然,缩放肯定会衰减图像的质量,尤其是当从一个小的分辨率放大到一个大分辨率的时候;而且缩小也有一些问题,缺省是拉伸模式COLORONCOLOR,它运算虽然快速,但是会丢失一些细节,HALFTONE方式拉伸运算速度很慢,但是质量会更高,(GDI+提供了一个扩展的选项)。

 

SetStretchBltMode (hdc, HALFTONE);

需要特别指出的是ICO和.CUR文件是可以在一个单独的文件中存储多个图片的文件,那么我们就需要在多种分辨率下设计不同的图片,建议使用GetSystemMetrics()来解决,那么如果必须缩放的话,系统将会替我们选择合适的图片。但是BMP或其它很多种文件合适是不支持在一个单独的文件中存储多个文件的,但是我们可以通过判断来确定在Load的时候选择建立哪个文件。

If (GetDeviceCaps (hdc, LOGPIXELSX) < 130) Bitmap = LoadBitmap (hInstance, (char*) IDB_BITMAP1);

Else Bitmap = LoadBitmap (hInstance, (char*) IDB_BITMAP2);

对于特殊的ICON和鼠标指针,目前我们采用的是标准的16×16 pixel 和 32×32 pixel大小,高分辨率的应用程序最大可以支持到64×64 pixel,当然这是在不改动注册表的前提下。理想的情况是在每个主要的分辨率下都有相应的大图标和小图标。

如果使用Comctl2.0提供的图片序列(HIMAGELIST),需要在放置到序列里面之前把它们缩放到合适大小,一个更好的选择是使用最新的comctl6.0,但是这只在Windows XP下支持,最新的控件支持会自动缩放它们在不同的分辨率下(halfton StrechBlt)。

界面布局

版面是另一个会导致在高分辨率下出现问题的环节,很多对话框都使用对话单位(DLU)作为规格设置单位,因为它可以随着系统分辨率而自动运算缩放变化;但是一些自定义的界面上常常需要被我们重新手动转换并且设定,因为有很多界面或对话框理论上工作在像素下,我们可以重新规划界面和对话框的设定,比如说完全使用对话单位,尽管我们也可以调用SetWindowPos()提供的方法,或者可以抛弃关于DPI的假设继续工作,使用system metrics来自动处理这些字体和控件之间的关联。

重绘

重绘也是一样,有些时候我们需要绘制屏幕或控件,需要计算不同的分辨率。如果我们开发了一个自定义控件,那么它或许可以工作在像素环境下,但是我们需要使用system metrics来避免分辨率的问题,如果我们在绘制一个复杂的图形可以使用SetMapMode来使用图形缩放引擎。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·用javascript实现的日期时间输入控件-JSP教程,Java技巧及代码
·java开发工具(JCreator,jbuilder,Eclipse)常见问题及解决-JSP教程,Java技巧及代码
·关于C#中,继承类重写与隐藏基类方法的区别!-.NET教程,C#语言
·.net中实现运行时从字符串动态创建对象-.NET教程,Asp.Net开发
·Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)-.NET教程,Asp.Net开发
·用WebWork、JSP、Velocity建立注册页面-JSP教程,Jsp/Servlet
·在eclipse上用myeclipse开发部署struts-JSP教程,Java技巧及代码
·Java Reflection (JAVA反射)-JSP教程,Java技巧及代码
·ASP.NET中使用web.config配置web应用程序中的数据库连接-.NET教程,Asp.Net开发
·Cookie的作用-PHP教程,PHP技巧
最新文章
·blog可以通过google adsense赚大钱吗?_网赚技巧
·张朝阳:竞争对手再联合也扳不动搜狐_站长访谈
·追求完美的英语教育网站-访e学网站长_站长访谈
·走进黑客网站站长的内心世界_站长访谈
·建站经验之域名选择篇诠释_站长心得
·google占据美国搜索引擎市场50% 邮箱占不到3%_google推广
·高分辨率下界面布局的解决方案3_站长心得
·google及雅虎搜索引擎优化的八大提示_seo网站优化
·如何突出_站长心得
·windows vista安装机密 避免联机激活与自选分区_windows vista
相关主题
  • 高分辨率下界面布局的解决方案4_站长心得
  • 高分辨率下界面布局的解决方案2_站长心得
  • 高分辨率下界面布局的解决方案1_站长心得
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭