编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 在图像背景上输出透明文...
  · 在图像背景上输出透明文本

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 16:37:10
          楼主

在图像背景上输出透明文本
在设计应用程序界面时,通常需要在原有的图像基础上输出透明的文本。为了能够输出背景透明的文本,可以调用CDC类的SetBkMode方法将背景模式设置为透明。该方法语法格式如下:
int SetBkMode( int nBkMode );
参数说明:
nBKMode:表示设置的背景模式,如果为TRANSPARENT,表示背景模式为透明,如果为OPAQUE,表示以当前的背景颜色填充背景。
为了演示输出透明文本,下面的示例首先在窗口中绘制一幅位图,然后在位图上输出透明的文本。
例如,在位图上输出透明的文本。
(1)创建一个单文档/视图结构的应用程序,工程名称为“TransText”。
(2)在视图类的OnDraw方法中编写程序代码。
void CTransTextView::OnDraw(CDC* pDC)
{
 CTransTextDoc* pDoc = GetDocument();    //获取文档对象
 ASSERT_VALID(pDoc);       //验证文档对象
 CBitmap bmp;         //定义一个位图对象
 bmp.LoadBitmap(IDB_BKBITMAP);     //加载位图
 BITMAP bInfo;         //定义位图结构
 bmp.GetBitmap(&bInfo);       //获取位图信息
 int width = bInfo.bmWidth;       //获取位图宽度
 int height = bInfo.bmHeight;      //获取位图高度
 CDC memDC;         //定义一个设备上下文
 memDC.CreateCompatibleDC(pDC);    //创建一个兼容的设备上下文
 memDC.SelectObject(&bmp);      //选中位图对象
 pDC->BitBlt(0,0,width,height,&memDC,0,0,SRCCOPY); //在设备上下文中绘制位图
 memDC.DeleteDC();        //释放设备上下文
 bmp.DeleteObject();        //释放位图对象
 CFont mFont;         //定义一个字体对象
 //创建字体
 VERIFY(mFont.CreateFont(     
  24, 20, 0, 0, FW_HEAVY, FALSE, FALSE,
  0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
  CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
  DEFAULT_PITCH | FF_SWISS, "宋体"));
 CFont* pOldFont = pDC->SelectObject(&mFont);  //选中创建的字体
 pDC->SetBkMode(TRANSPARENT);    //设置透明的背景模式
 pDC->SetTextColor(RGB(0,255,0));     //设置文本颜色
 pDC->TextOut(60,60,"田园生活");     //输出文本
 pDC->SelectObject(pOldFont);      //选中之前的文本
 mFont.DeleteObject();       //释放字体对象
}
 注意:在使用SetBkMode方法设置背景模式时,必需在每次绘制文字前使用。
(3)运行程序,效果如图1所示。
 
图1  透明文本

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页