注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Windows应用高级编程笔记(7)  

2011-10-06 17:13:28|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近一直比较忙,学习的时间就显得比较少了,刚忙完一个小项目,又淘到一本好书,也是红皮书系列的,中文翻译是《Windows应用高级编程——C#编程篇》,翻译版由清华大学出版社出版。这本书说的比较详细,将许多书籍中细微末节的地方都说的比较清楚,采用面向对象的原则来介绍如何进行Windows编程,虽然带有“高级”字样,但是阐述详细,步骤清晰,对于一个初学者也是能够看得懂的。

Windows应用高级编程笔记(1) - Castor - 趁年轻,多折腾~~

===============================================================================

第6章 打印
System.Drawing.Printing命名空间
基本打印最重要的:PrintDocument,使用该类的Print方法打印,还有一些属性,如PrinterSettings、DefaultPageSettings
另外,System.Windows.Forms.PrintDialog显示通用打印对话框。System.Windows.Forms.PageSetupDialog对话框显示更改即本页面设置的对话框。
System.Windows.Forms.PrintPreviewDialog显示预览打印效果对话框。该类有个属性为Document,可设置为需要打印的PrintDocumenet。
public partial class Form1 : Form
{
    ImageDocument id;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "BMP文件(*.BMP)|*.BMP|JPEG文件(*.JPG)|*.JPG";
        if (ofd.ShowDialog(this) == DialogResult.OK)
        {
            pictureBox1.Image = Image.FromFile(ofd.FileName);
            id = new ImageDocument(pictureBox1.Image);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (id.Image == null) return;
        id.ShowPrintPreviewDialog();
    }
}

public class DocumentBase : PrintDocument
{
    public DialogResult ShowPrintPreviewDialog()
    {
        PrintPreviewDialog ppd = new PrintPreviewDialog();
        ppd.Document = this;
        return ppd.ShowDialog();
    }
}

public class ImageDocument : DocumentBase
{
    private Image img;

    public ImageDocument(Image _img)
    {
        this.img = _img;
    }

    public Image Image
    {
        get { return img; }
        set { img = value; }
    }

    protected override void  OnPrintPage(PrintPageEventArgs e)
    {
        if (this.Image == null)
            throw new InvalidOperationException("没有图形");
        e.Graphics.DrawImage(this.Image, e.MarginBounds);
    }
}
其中的DocumentBase类扩展了PrintDocument类,因为该类没有足够的基本功能。
另外还有ImageDocument类包含了需要打印的数据。

Windows应用高级编程笔记(7) - Castor - 趁年轻,多折腾~~

 加载

Windows应用高级编程笔记(7) - Castor - 趁年轻,多折腾~~

 打印预览

 

  评论这张
 
阅读(534)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016