您的位置:首页 > 编程语言 > C#

深入浅出C#中文版最后90页的翻译(部分)

2010-06-26 10:20 162 查看
612

这里是完整的Renderer 类,给你的AnimateBees()方法.确保对三个窗体的修改,尤其是hive和feild的paint事件。这些事件调用了renderer对象的PaintHive()和PaintFeild()方法,这个两个方法实现了所有的动画绘制。

不要忘了声明Renderer类为Public,同样World,Hive,Flower,Bee都为Public。否则,你将收到可访问性不一致的错误。倒回去看看第二章in the Appendix就明白为什么要这样做。

InitializeImage()方法缩放了所有的图片资源并储存在Renderer类的Bitmap字段里。这样PaintHive()和PaintForm()方法就可以使用Graphics的DrawImageUnscaled()方法来绘制图象
------------------------------------
613

窗体的ClientSize属性是一个矩形,它表示你能绘制的最大范围。

PaintField()方法在world里遍历花和蜜蜂,并依据它们的位置来绘制图象。首先绘制太阳,然后是蜂窝,接着绘制花和蜜蜂。是正确的绘制顺序很重要--如果先绘制蜜蜂再绘制花,则蜜蜂看起来就像飞在花的背后。

这里和练习里的AnimateBees()方法一样,它用frame字段来循环--0,1,2,3再回到2,1,然后再次循环,这样看起来扇翅膀的动画是平滑的。
---------------------
614
使用Graphics对象和事件委托来打印

你用过Graphics的一系列方法来绘制窗体,现在同样用于打印。.net的printing对象的命名空间为 System.Drawing.Printing。很容易在应用程序里增加打印和打印预览功能。建立一个PrintDocument对象,使用一个叫PrintPage的事件,就像你用的Tick事件一样,然后委托给PrintDocument对象的Print()方法。请记住:IDE很容易增加一个委托,下面是具体做法:
1,添加一个新的windows窗体,并在窗体上添加一个button,打开代码编辑在顶部添加一条using System.Drawing.Printing。双击button进入事件Click委托的方法button1_Click。看看输入+=时会发生什么:

2,按下tab,IDE会自动填充余下的代码,这和你在十一章里添加事件一样。

3,按照提示再次按下TAB,IDE会把这个事件委托(即调用)的方法添加到form里。
现在你可以在这里写入任何代码,来替换掉这条自动生成的Throw语句,一会我来告诉你怎么做。
PrintPageEventargs类型的e有一个Graphics属性。然后调用了e.Graphics的绘制方法

4,现在来完成用来调用Document.Print()方法的button1_Click。当调用这个方法时,document.PrintPage事件使用Graphics对象作为参数。委托给document_PrintPage方法来处理。
---------------------------
615
用一个打印对话框控件和打印预览对象来打印。
添加一个print preview窗体和一个打印对话框,和添加保存或打开对话框一样的做法。
你只需要一个PrintDialog和PrintPreviewDialog,设置Document属性,然后调用对话框的Show()方法。对话框就会把文档发送到打印机,而不需要调用Print()方法下面。让我们一起来完成:
5,有了PrintDocument和PrintPage事件后,可以用新建的PrintPreviewDialog对象来弹出一个打印预览窗体。
过几页我来完成DrawBee()方法。

用e.HasMorePages来打印多页面文档
如果你要打印的页数超过一页,设置e.HasMorePages=true.这就表示还有页面需要打印。循环,每一页都会保持e.HasMorePages=true。现在来打印两页。

如果你设置e.HasMorePages=true,Document对象将再次发送消息打印下一页。
现在运行你的系统确保打印预揽有两个页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: