11月302014
[教程] 第一讲 GDI文字textout
ACN论坛.讲师:seniors 转载请说明此文出处所在:<<简易工作室>>,谢谢!
先挖个大坑,不知道能不能继续,也不知道有没有这个能力 一、基本概念 我也不懂,就请度娘说吧 GDI 概念 二、GDI 先讲GDI因为相应简单点,但不一定是比GDI+操作方便 GDI的操作多是相对于设备环境(device context)的,设备环境简称DC,所以我们的操作多是针对DC来的。所以例子中第一个操作就是 “$hDC = _WinAPI_GetDC($hWnd)” 使用完DC要归还(释放) 最后一句就是释放DC的操作_WinAPI_ReleaseDC($hWnd, $hDC) 在这两句中间就是针对DC的操作 这一讲先讲字符串输出的一种方式_WinAPI_TextOut 看图和源程序应该能懂了,不细说了 GUISetState() gditest() 上面这两句顺序不能颠倒,颠倒了就看不到输出的文字了,为什么? 因为我们这个是直接在DC里输出,如果gditest()放在前面,那当GUI显示时,会调用WM_PAINT绘制,而我们没有改动WM_PAINT,所以不能显示出来 而且本例子最小化后再恢复也不能显示出字符串,要达到最小化后再恢复能显示留到后面再讲。先看懂_WinAPI_TextOut |
#include <APIConstants.au3> #include <WinAPIEx.au3> GUICreate("第一讲", 300, 200) $ctrlId = GUICtrlCreatePic("",0 ,0 ,300,200) $hWnd = GUICtrlGetHandle($ctrlId) GUISetState() gditest() While 1 $Msg = GUIGetMsg() Switch $Msg Case -3 ExitLoop EndSwitch WEnd GUIDelete() Exit Func gditest() $hDC = _WinAPI_GetDC($hWnd) _WinAPI_TextOut($hDC, 10, 10, '默认方式的字符串') _WinAPI_SetBkMode($hDC, $TRANSPARENT);背景透明,即不使用背景颜色;返回值为原来的背景混合模式,即$OPAQUE _WinAPI_TextOut($hDC, 10, 30, '背景透明的字符串') _WinAPI_SetBkMode($hDC, $OPAQUE);背景填充模式 $oldTextColor = _WinAPI_SetTextColor($hDC, 0xFF0000);设置文字颜色,颜色模式为BBGGRR,返回值为原来的颜色 ConsoleWrite(Hex($oldTextColor, 6)&@CR);输出看一下一般默认是黑色0x000000 _WinAPI_TextOut($hDC, 10, 50, '修改字符颜色的字符串') _WinAPI_SetTextColor($hDC, $oldTextColor);改回原来默认文字颜色 $oldBkColor = _WinAPI_SetBkColor($hDC, 0xFF0000);设置背景颜色,颜色模式为BBGGRR,返回值为原来的颜色 ConsoleWrite(Hex($oldBkColor, 6)&@CR);输出看一下一般默认是白色0xFFFFFF _WinAPI_TextOut($hDC, 10, 70, '修改字符背景颜色的字符串') _WinAPI_SetBkColor($hDC, $oldBkColor);改回原来默认背景颜色 $hFont = _WinAPI_CreateFont(38, 0, 0, 0, $FW_NORMAL, 0, 0, 0, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $DEFAULT_PITCH, '黑体') $oldFontObj = _WinAPI_SelectObject($hDC, $hFont);选择新建立的字体,返回值为原来默认字体 _WinAPI_TextOut($hDC, 10, 90, '字号为38的黑体字符串') _WinAPI_SelectObject($hDC, $oldFontObj);改回原来默认字体 _WinAPI_DeleteObject($hFont);释放字体对象 _WinAPI_ReleaseDC($hWnd, $hDC) EndFunc```
本文固定链接: http://jianyiit.com/post-35.html
扫描二维码,在手机上阅读
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!