文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院图形处理其它图形软件高分辨率下界面布局的解决方案
精品推荐
特别推荐
·淘宝网店“设计装修”技巧全攻略
·巧用Windows的画图程序给图片添加水印
·高分辨率下界面布局的解决方案
·电脑艺术设计大师之路#6-图像调整
·如何使设计作品获得最佳菲林输出?
·Wacom影拓3手绘板实例教程:鸡年画鸡(一)
·分形——数学与艺术结合的明珠
·3DMAX的基础知识
·微软新成果:为懒人准备的抠图技术
·好用的Medi@show的电子影集
·推荐小巧精悍的《豪杰大眼睛》
·制作独具特色的人像照片 手绘人物指南
热点TOP10
·超酷!国外墙面涂鸦艺术图片精彩大赏
·2008年北京奥运会体育图标
·在线设计:轻松获取个性篆刻印章
·MatLab简介
·用PhotoFamily制作电子相册
·Adobe发布最新版Camera RAW 4.2插件
·电脑艺术设计大师之路#6-图像调整
·用《会声会影》制作动感校友集
·淘宝网店“设计装修”技巧全攻略
·如何使设计作品获得最佳菲林输出?
·制作独具特色的人像照片 手绘人物指南
·word和EXCEL文件如何导入问题汇总
·自制QQ自定义文字动画表情:透明糖果文字
·《越狱》中鸭子折纸图文教程
·微软新成果:为懒人准备的抠图技术
·nEOiMAGING光影魔术手使用视频教程
·Falsh变屏保--SWF Browser
·在线设计:轻松在线制作各种Logo标志
·VRay材质教程
·在家开影楼—轻松制作艺术照

高分辨率下界面布局的解决方案

日期:2007年9月10日 作者: 查看:[大字体 中字体 小字体]


CHOOSEFONT data;

Memset (&data, 0, sizeof (data));

data.lStructSize = sizeof (data);

data.hwndOwner = form;

data.Flags = CF_TTONLY CF_SCREENFONTS;

ChooseFont (&data);

最好的方法常常是在各种高分辨率下指定一个尺寸和一个区域的尺寸并且使用字体尺寸作为度量比例尺来指定这个页面中的其它元素,比如说,可以设定按钮之间的间距为缺省字体的高度的多少,使用GetTextMetrics()这个函数可以重新设定一个字体的高度。

TEXTMETRIC metrics;

GetTextMetrics (hdc, &metrics);

Int height = metrics.tmHeight;

最好不要使用TEXTMETRIC提供的tmAveCharWidth 方法,因为它只可以处理英文字母,除此以外我们还可以使用GetTextExtent()的这个方法来确认所关心的字符串的尺寸,我们可以用GetTextExtentPoint32()绘制一个环绕字符串的矩形,示例如下:

 


SIZE size;

GetTextExtentPoint32 (hdc, string, strlen (string), &size);

Int paddingX = SCALEX (8);

Int paddingY = SCALEX (8);

Rectangle (hdc, x - paddingX, y - paddingY, x + size.cx

+ paddingX, y + size.cy + paddingY);

TextOut (hdc, x, y, string, strlen (string));

最后,我们意识到尽管TrueType字体缩放精细,但是他们不是线性缩放,也就是说在DPI增加10%以后字符串的长度不能正确的增加10%,(使用GDI+就没有这个问题),因为一些特定的字母只能在几个尺寸上看起来不错,而TrueType却可以自动选择一个近似的尺寸正确显示,这是使用GetTextExtent这个函数的原因。

图像

图像是以光栅为基础的文件,(比如说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)。


上一页 [1] [2] [3] 下一页 




上一篇:八大要领 做网站就这么简单

下一篇:Windows Live OneCare 2.0试用感受

高分辨率下界面布局的解决方案 相关文章:
·XP系统运行慢?小编自用7招解决
·不用重装XP系统就可以解决全部故障
·校园网组建方案
·施工与工程组织方案
·DIV CSS网页布局实例:十步学会用CSS建站
·全面解决Generic host process for win32 services遇到问题需要关闭
·国内大学校园网网络建设方案参考
·外挂 录象 网站 举报方案最新教程_QQ堂
·中小企业整体网络安全解决方案解析
·开机提示reboot and select proper boot device or insert boot Media in selected boot device的解决
高分辨率下界面布局的解决方案 相关软件:
·成功少儿培养方案(上中下)高清晰PDF电子书
·极品美女登陆界面+登录介面更换器
·Vista界面仿真器 V1.51
·《炽天使:二战空骑兵》界面汉化补丁
·动网先锋系统集成方案大全
·Loading界面
·3D下载界面
·热网下载系统 v098(界面优化版)
·网络安全cisco解决方案
·Win XP播放器界面

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot