怎么将文字保存到位图文件中? 在一个编辑控件里输入一个文字,按确定后,就把这个文字保存到位图文件中?怎么做?最好有个例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用DIB section。例子就要参考msdn或者codeguru了。 http://www.vckbase.com/document/viewdoc/?id=1659看看这个例子,里边功能似乎跟你的差不多~ 在内存DC中加载位图,然后DrawText对话框中的文字到任意位置.最后保存DIB为BMP文件即可.简单的图形处理程序而已. 代码片段:CDC dc; dc.CreateCompatibleDC(NULL); CBitmap * pSaveBmp = dc.SelectObject(CBitmap::FromHandle(hBmp)); CFont font; font.CreateFont(14,0,0,0,FW_THIN,0,0,0,DEFAULT_CHARSET,0,0,0,0,"Thamo"); //自定义字体CFont * pSaveFont = dc.SelectObject(&font);dc.SetBkMode(TRANSPARENT);dc.SetTextColor(RGB(255,0,0)); // 定义文字颜色CSize size=dc.GetTextExtent("Hello");int left=64-size.cx/2;int top=64-size.cy/2;dc.TextOut(left,top,"Hello");dc.SelectObject(pSaveFont);dc.SelectObject(pSaveBmp); 我想你的问题可能是显示的文字背景色,与前景色不是预想的。其实创建的内存位图只是一个单色的位图,你在上面写的字只能是黑色,或者是白色。SetTextColor(RGB(255,0,0)),与SetTextColor(RGB(255,255,0)),是一样的效果,只是一个非黑色的文字。真正的现实颜色,是由窗口DC的前景色与背景色决定的。转换关系如下:将一个单色DC传进彩色DC中,系统自动将单色位图中的 1 转化成彩色DC的背景色,0 转换成彩色位图的前景色。所以只有设定窗口DC的前景色与背景色才能真正达到效果。不过细心想想上面的说法,仔细修改。 为了参照加上代码,最好自己先消化消化呵呵,加油啊,一起进步。memDC.SetTextColor(RGB(255,255,0)); //使文字的颜色是不同于背景的,保证文字不被背景屏蔽memDC.SetBkColor(RGB(0,0,0)); //保证文字背景颜色与DC背景色相同,防止出现文字显示的不透明pDC->SetBkColor(RGB(255,255,0)); //真正的文字颜色pDC->SetTextColor(RGB(0,0,255)); //真正的文字背景色 怎么在DirectDraw中绘制灰度图像? HttpQueryInfo()后面三个参数返回的值都是什么啊?急等!! FlushFileBuffers 是阻塞的吗? 发个贴 人都气死了 constructors not allowed a return type 如何修改LPARAM内的值?注:当前LPARAM内是鼠标的坐标! 怎样动态的改变对话框背景图?? C++也没有处理xml文件的类啊?? 关于两个工程之间联系的问题 vc++链接数据库oracle出错,要我调试! 如何去掉dialog在按Esc后自动退出? 求使用Grid ActiveX Control的例子 为什么收不到消息
看看这个例子,里边功能似乎跟你的差不多~
dc.CreateCompatibleDC(NULL);
CBitmap * pSaveBmp = dc.SelectObject(CBitmap::FromHandle(hBmp));
CFont font;
font.CreateFont(14,0,0,0,FW_THIN,0,0,0,DEFAULT_CHARSET,0,0,0,0,"Thamo"); //自定义字体
CFont * pSaveFont = dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,0,0)); // 定义文字颜色
CSize size=dc.GetTextExtent("Hello");
int left=64-size.cx/2;
int top=64-size.cy/2;
dc.TextOut(left,top,"Hello");
dc.SelectObject(pSaveFont);
dc.SelectObject(pSaveBmp);
SetTextColor(RGB(255,0,0)),与SetTextColor(RGB(255,255,0)),是一样的效果,只是一个非黑色的文字。真正的现实颜色,是由窗口DC的前景色与背景色决定的。转换关系如下:
将一个单色DC传进彩色DC中,系统自动将单色位图中的 1 转化成彩色DC的背景色,0 转换成彩色位图的前景色。所以只有设定窗口DC的前景色与背景色才能真正达到效果。不过细心想想上面的说法,仔细修改。
//使文字的颜色是不同于背景的,保证文字不被背景屏蔽
memDC.SetBkColor(RGB(0,0,0));
//保证文字背景颜色与DC背景色相同,防止出现文字显示的不透明pDC->SetBkColor(RGB(255,255,0)); //真正的文字颜色
pDC->SetTextColor(RGB(0,0,255)); //真正的文字背景色