如何根据系统字体改变一些变量
时间:2011-11-26
来源:互联网
C/C++ code
在windows程序设计位图那部分看到这段代码,请问
bm2 .bmWidth = (cxChar * bm2 .bmWidth) / 4 ;
bm2 .bmHeight = (cyChar * bm2 .bmHeight ) / 8 ;
这两句转换是什么意思?
HBITMAP StretchBitmap (HBITMAP hBitmap1 ) { BITMAP bm1 , bm2 ; HBITMAP hBitmap2 ; HDC hdc , hdcMem1, hdcMem2 ; int cxChar, cyChar ; // Get the width and height of a system font character cxChar = LOWORD (GetDialogBaseUnits ()) ; cyChar = HIWORD (GetDialogBaseUnits ()) ; // Create 2 memory DCs compatible with the display hdc = CreateIC (TEXT ("DISPLAY"), NULL, NULL, NULL) ; hdcMem1 = CreateCompatibleDC (hdc ) ; hdcMem2 = CreateCompatibleDC (hdc ) ; DeleteDC (hdc ) ; // Get the dimensions of the bitmap to be stretched GetObject (hBitmap1 , sizeof (BITMAP), ( PTSTR ) & bm1 ) ; // Scale these dimensions based on the system font size bm2 = bm1 ; bm2 .bmWidth = (cxChar * bm2 .bmWidth) / 4 ; bm2 .bmHeight = (cyChar * bm2 .bmHeight ) / 8 ; bm2 .bmWidthBytes = (( bm2 .bmWidth + 15) / 16) * 2 ; // Create a new bitmap of larger size hBitmap2 = CreateBitmapIndirect (& bm2 ) ; // Select the bitmaps in the memory DCs and do a StretchBlt SelectObject (hdcMem1, hBitmap1 ) ; SelectObject (hdcMem2, hBitmap2 ) ; StretchBlt (hdcMem2, 0, 0, bm2 .bmWidth, bm2 .bmHeight , hdcMem1, 0, 0, bm1 .bmWidth, bm1 .bmHeight , SRCCOPY) ; // Clean up DeleteDC (hdcMem1) ; DeleteDC (hdcMem2) ; DeleteObject (hBitmap1 ) ; return hBitmap2 ; }
在windows程序设计位图那部分看到这段代码,请问
bm2 .bmWidth = (cxChar * bm2 .bmWidth) / 4 ;
bm2 .bmHeight = (cyChar * bm2 .bmHeight ) / 8 ;
这两句转换是什么意思?
作者: q408384053 发布时间: 2011-11-26
其目的是:
当我们需要缩放字体以适应不同显示分辨率或纵横比时,内存设备内容也能解决问题。在GRAFMENU程序中,
我建立了四个位图,这些位图只适用于系统字体高8图素、宽4图素的显示。对于其它尺寸的系统字体,
只能缩放位图。GRAFMENU中的StretchBitmap函数完成此功能。
这是《windows程序设计》位图 部分的原话。
当我们需要缩放字体以适应不同显示分辨率或纵横比时,内存设备内容也能解决问题。在GRAFMENU程序中,
我建立了四个位图,这些位图只适用于系统字体高8图素、宽4图素的显示。对于其它尺寸的系统字体,
只能缩放位图。GRAFMENU中的StretchBitmap函数完成此功能。
这是《windows程序设计》位图 部分的原话。
作者: gameslq 发布时间: 2011-11-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28