如何根据系统字体改变一些变量
时间: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版激活秘钥/序列号/激活码推荐 附激活工具 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具阅读:74 
-   如何安装mysql8.0 如何安装mysql8.0阅读:31 
-   Word快速设置标题样式步骤详解 Word快速设置标题样式步骤详解阅读:28 
-   20+道必知必会的Vue面试题(附答案解析) 20+道必知必会的Vue面试题(附答案解析)阅读:37 
-   HTML如何制作表单 HTML如何制作表单阅读:22 
-   百词斩可以改天数吗?当然可以,4个步骤轻松修改天数! 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!阅读:31 
-   ET文件格式和XLS格式文件之间如何转化? ET文件格式和XLS格式文件之间如何转化?阅读:24 
-   react和vue的区别及优缺点是什么 react和vue的区别及优缺点是什么阅读:121 
-   支付宝人脸识别如何关闭? 支付宝人脸识别如何关闭?阅读:21 
-   腾讯微云怎么修改照片或视频备份路径? 腾讯微云怎么修改照片或视频备份路径?阅读:28 















