请问用VC怎么把文字绘到图片中?就像网页上的那些验证码一样

先在内存中创建一"画布",在这块"画布"上写字,然后返回这块这块"画布",就得到写好文字的图片了

C/C++ code
   
   
// 功能: 创建一位图,位图上已写好了文字 // 参数: hdc显示设备上下文; pszText要写的文字; iWidth, iHeiht位图的宽,高 // 返回: 创建好的位图句柄 HBITMAP CTestDlg2Dlg::NewBitmap(HDC hdc, char * pszText, int iWidth, int iHeight) { if (pszText == NULL) return NULL; HBITMAP hBmp = ::CreateCompatibleBitmap(hdc, iWidth, iHeight); // 创建要返回的位图句柄 HDC hMemDC = ::CreateCompatibleDC(hdc); // 创建与显示设备相关的内存设备上下文 SelectObject(hMemDC, hBmp); // 在位图上写字 SetBkMode(hMemDC, TRANSPARENT); RECT rc = { 0 , 0 , iWidth, iHeight}; HBRUSH hb = ::CreateSolidBrush(RGB( 255 , 255 , 255 )); FillRect(hMemDC, & rc, hb); ::DrawText(hMemDC, pszText, - 1 , & rc, DT_VCENTER | DT_SINGLELINE); // 释放资源 ::DeleteDC(hMemDC); ::DeleteObject(hb); return hBmp; // 返回创建好的位图 } // 下面是一个Button,测试 void CTestDlg2Dlg::OnButton1() { // TODO: Add your control notification handler code here HDC hdc = ::GetDC(m_hWnd); int iWidth = 100 , iHeight = 50 ; HBITMAP hBmp = NewBitmap(hdc, " Hello World " , iWidth, iHeight); HDC hMemDC = ::CreateCompatibleDC(hdc); SelectObject(hMemDC, hBmp); BitBlt(hdc, 0 , 0 , iWidth, iHeight, hMemDC, 0 , 0 , SRCCOPY); ::DeleteDC(hMemDC); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值