用WIN API如何在窗体显示的位图上画字? 请问如何用在主窗体上描画的bitmap上写字,应该在WinMain里和WndProc做些什么?能给点简单的代码实例最好,,,谢谢各位~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般的方法是将位图贴在一个DC中,然后用TextOut写字,再将DC中的位图贴到窗口中 是可以这样,我试了试,但是字写出来了,背后有白色的背景,我想要的是BITMAP的背景!请问有什么办法可以实现 int WINAPI SetBkMode(__in HDC hdc, __in int mode); // MODE 设置为 TRANSPARENT 未定义直接 为 1 这个有点麻烦,提供一个思路给你,你可以定义一个DC,以白底黑字写字,然后将这个DC的内容和背景进行AND运算,然后再用黑底和你想要要的字色来写字,将这个DC的内容与背景进行OR运算,最后应该能达到你的结果 char szText[] = "你要写的文字";HBITMAP hbm = LoadBitmap(...)//加载你的BitmapHDC hDC = GetDC(hWnd);HDC hMemDC = CreateCompatibleDC(hDC); SelectObject(hMemDC,hbm);SetBkMode(hMemDC, TRANSPARENT);TextOut(hMemDC,0,0,szText,strlen(szText));//或者用DrawTextBitBlt(hDC,0,0,bitmap_width,bitmap_height,hMemDC,0,0,SRCCOPY);DeleteObject(hMemDC);ReleaseDC(m_hWnd,hDC);DeleteObject(hbm); CDC m_memDC;m_memDC.CreateCompatibleDC(NULL);//创建内存DC.CBtimap m_Bitmap;m_Bitmap.LoadBitmapW(IDB_BITMAP);//IDB_BITMAP 是你在资源中定义的bitmap。m_memDC.SelectObject(&m_Bitmap); //将bitmap选进内存DC中。其它地方:可以写字了m_memDC.TextOutW(int topleftX,int topleftY,LPCTSTR stringYouWangOutPut,int nCountOfString);在OnDraw 或者OnPain中。dc.BitBlt(.............................);//不用我细说了吧//总之就是先创建一个内存DC,做出操作,画图,写字都可以,然后显示在窗口中。 谢谢了,刚刚的代码对我帮助很大,但是我还想问如果我想将字放在一个矩形里,然后传进DC中,用DrawText画,,最后设置字的大小和字体那应该怎么搞了? 这个需要填充一个LOGFONT结构,然后CreateFontIndirect创建字体得到其HFONT,SelectObject(hMemDC,hFont),DrawText就可以了。 请教各位大虾关于多线程的问题 有谁会串口通信和蓝牙开发?有项目要找人做。 『急』php向COM组件传递 路径 问题(Google了半天也没有答案)! spy++的问题 如何动态设置CHeaderCtrl的高度? 小弟有问题要问!关于模式对话框的消息. socket图像处理 在线等待!!!关于delete的问题 LabVIEW这门图形化编程平台帮你拓展工控职业生涯 关于图中最短路径得问题。 一个对话框中DoModal()的问题? 视频显示,界面刷新问题.把界面缩下放大后就不在显示图象.
是可以这样,我试了试,但是字写出来了,背后有白色的背景,我想要的是BITMAP的背景!请问有什么办法可以实现
HBITMAP hbm = LoadBitmap(...)//加载你的Bitmap
HDC hDC = GetDC(hWnd);
HDC hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC,hbm);
SetBkMode(hMemDC, TRANSPARENT);TextOut(hMemDC,0,0,szText,strlen(szText));//或者用DrawText
BitBlt(hDC,0,0,bitmap_width,bitmap_height,hMemDC,0,0,SRCCOPY);
DeleteObject(hMemDC);
ReleaseDC(m_hWnd,hDC);DeleteObject(hbm);
CDC m_memDC;
m_memDC.CreateCompatibleDC(NULL);//创建内存DC.
CBtimap m_Bitmap;
m_Bitmap.LoadBitmapW(IDB_BITMAP);//IDB_BITMAP 是你在资源中定义的bitmap。
m_memDC.SelectObject(&m_Bitmap); //将bitmap选进内存DC中。
其它地方:可以写字了m_memDC.TextOutW(int topleftX,int topleftY,LPCTSTR stringYouWangOutPut,int nCountOfString);在OnDraw 或者OnPain中。dc.BitBlt(.............................);//不用我细说了吧
//总之就是先创建一个内存DC,做出操作,画图,写字都可以,然后显示在窗口中。
用DrawText画,,最后设置字的大小和字体那应该怎么搞了?