你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
给DIB位图添加文本的方法
 

王姗姗 李海晟

摘要 介绍了两种用VC++6.0实现的在设备无关位图上添加文本的方法,一是用对话框生成文本,二是用键盘输入文本,并实时显示输入的文本。

关键词 MFC,设备上下文,内存设备上下文,DIBDIBSECTION

一、概述

在图像上添加标记和文本是图像编辑中经常碰到的操作,如在一幅图像中添加标题、注释和尺寸数据等,许多图像应用软件如PhotoShopIllustratorWindows系统自带的Paint等都具备在图像上添加文本的功能。实现添加文本的方法有多种,文献中定义了一个文本类,处理有关文本输入消息,实现了类似Paint中的文本输入方式。实际上,可以调用MFC中的有关函数比较简单地实现这一功能。

这种方法的主要特点有: 给文档类的图像成员添加文本,而不是操作通过OnDraw()函数显示在视图窗口中的内容;逐字显示添加的文本;用视图类成员函数TextToDIB()访问位图内存数据块,把完整的文本串写在DIB图像上,设置文档修改标志为真,提示关闭文档时把位图数据块回写到磁盘文件中,以实现永久保存。而这些并不是通过文档序列化操作完成。

二、分析与实现

文本是逐个字地添加在图像上并在应用程序窗口中显示的,可以想象,如果每写一个字就用函数TextToDIB()DIB内存数据块进行存取、修改,然后显示修改后的整幅图像,直到最终把整串文本写在图像上,那么程序运行无疑会耗费相当一些资源,然而添加文本操作本身却很简单!另外,用户也可能不满意添加的文本而要重新操作。然而一旦修改了像素数据,虽然没有改变磁盘上的图像文件,但内存中图像的内容就不可以再恢复到原来的样子。程序运行在内存空间,如果错误操作了图像内存块,再去打开图像文件重新读取必将延长执行时间。

MFC应用程序的绘图功能都是在设备上下文(Device Context)中实现的。设备上下文类CDC封装了API中的设备操作函数。内存设备上下文则是在内存中实现的设备上下文。我们的方法不是把每次添加的文字都反映在图像的内存数据块上,相反,用字符串变量textContents记录添加的文本,并在设备上下文中逐个显示出来,直到确定不再添加,才把所有的文本一次性的借助于内存设备上下文修改到图像数据块上。把显示设备上下文和内存设备上下文相结合,实现对图像交互式处理、显示并保存处理结果。

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089