中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 图形图像与多媒体
VC中的图象打印问题
作者:未知 时间:2005-07-20 14:15 出处:VC知识库 责编:chinaitpower
              摘要:VC中的图象打印问题

VC中的图象打印问题

作者:mysoft

下载源代码
 
  在VCkbase论坛中朋友的帮助下,我终于完成了对图象的打印操作,在此,将其全部奉上,以满足与我有同样经历的朋友的需要.在这里,我要特别感谢VCKbase中的LiuRong! 另外,由于这是我的第一篇文章,难免有不尽人意之处,欢迎大家提出批评和建议,先谢谢啦。

VC中的图象打印一般有两种方法:

一、选定打印设备环境后,用DrawState可以将图象打印出来,这可以用于资源中图象的打印输出,比较简单,不再多说.

二、窗口内容的打印,这是本文的重点,也是我遇到的最大的问题,下面我主要介绍这种打印;

1、工程简单介绍
  建立一个基于对话框的工程,对话框没有标题栏,在其客户区画图,根据用户的需要将客户区的内容打印出来;
2、需要解决的问题

  • (1)、由于对话框没有标题栏,菜单栏和其他按钮,而要让用户在需要的时候打印其内容,可以定义一个热键,文中定义的热键是(Ctrl+P),
  • (2)、由于是基于对话框的工程,应用程序框架没有提供打印功能,这就需要我们自己建立一个打印设备环境,可以用CDC的成员函数CreateDC来实现 ,但用此法时,必须事先知道打印机名称和打印机驱动程序名称,考虑到这种限制,笔者用了另外一种方法,具体方法请看工程Print函数中的代码;
  • (3)、打印的原理:建立内存设备环境,将对话框的的内容拷贝到内存设备环境,然后又将内存设备环境中的内容拷贝到打印设备环境;
  • (4)、笔者在实验时发现,"在打印的时候在建立内存设备环境,然后将对话框的的内容拷贝到内存设备环境,再将内存设备环境中的内容拷贝到打印设备环境"存在一个问题 ,那就是打印时弹出的打印对话框要覆盖我们建立的对话框,这样实际拷贝的内存设备环境中的内容是没有被覆盖的部分,针对这种情况,笔者用了了一个成员函数来存储内存设备环境 ,而且,在OnPaint中(也就是每次重画时)将对话框中的内容重新拷贝到内存设备环境中,这就是 LiuRong 给我的启发,因为我原来打印出来的只是一个黑色矩形框,谢谢你!
  • (5)、该工程还实现了无标题对话框的拖动!
  • 三、使用方法
      使用时,只需在OnPaint的"显示图片"部分画图就可以啦,一定要在拷贝到内存设备环境中之前画图;

      好啦,具体实现,请看工程文件中代码(在vc6,XP下打印成功),感谢VCKbase以及LiuRong!
    欢迎大家给予批评,指正!websurf@163.com。

    关闭本页
     
    首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
    Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有