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

ljamie 2009-01-19 10:38:22
请问用VC怎么把文字绘到图片中,然后保存成图片?就像网页上的那些图片验证码一样
...全文
240 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vip126_123 2011-01-08
  • 打赏
  • 举报
回复
到底能不能行?
pavel_loyal 2010-05-13
  • 打赏
  • 举报
回复
学习学习!!
lizhigang34 2009-01-19
  • 打赏
  • 举报
回复
先在内存中创建一"画布",在这块"画布"上写字,然后返回这块这块"画布",就得到写好文字的图片了

//功能: 创建一位图,位图上已写好了文字
//参数: 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);
}
ljamie 2009-01-19
  • 打赏
  • 举报
回复
我是想把文字写好后,保存成图片,如果实在不行的话,也可以先在图片上加文字然后再保存成图片,
lizhigang34 2009-01-19
  • 打赏
  • 举报
回复
你是想在一张已经存在的图片上加文字?? 还是把文字写好后,保存成一张图片???
ljamie 2009-01-19
  • 打赏
  • 举报
回复
可以的,只要在一副图片中输出一个文字就可以了,请问具体怎么实现呢?最好是能在内存中实现的,然后再把内存保存成图片就可以了,能不能给出点代码呀
路人乙2019 2009-01-19
  • 打赏
  • 举报
回复
每个文字都做一副图片怎么样?然后画到背景图上去,再把整个rect保存成bmp.
ljamie 2009-01-19
  • 打赏
  • 举报
回复
高人呀,我现在在网吧,晚上回去试下
songsu 2009-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lizhigang34 的回复:]
先在内存中创建一"画布",在这块"画布"上写字,然后返回这块这块"画布",就得到写好文字的图片了

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 = ::Cr…
[/Quote]

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧