南昌航空大学科技学院学士学位论文
图3.13 图片的打印预览
实现的关键代码如下;
private MemoryStream streamToPrint;
private void 打印预览ToolStripMenuItem_Click(object sender, EventArgs e) {
PrintDocument printDocument1 = new PrintDocument(); printDocument1.PrintPage += new
PrintPageEventHandler(printDocument1_PrintPage); Bitmap myBitmap = DrawImage();
streamToPrint = new MemoryStream(); myBitmap.Save(streamToPrint, System.Drawing.Imaging.ImageFormat.Jpeg);
PrintPreviewDialog p = new PrintPreviewDialog(); p.UseAntiAlias = true;
p.Document = printDocument1;
p.PrintPreviewControl.Zoom = 0.5f; p.Height = CC.palette.Height; p.ShowDialog();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
System.Drawing.Image image =
36
南昌航空大学科技学院学士学位论文
System.Drawing.Image.FromStream(this.streamToPrint);
image.RotateFlip(RotateFlipType.Rotate270FlipNone); int x = e.MarginBounds.X; int y = e.MarginBounds.Y; int width = image.Width; int height = image.Height;
if ((width / e.MarginBounds.Width) > (height / e.MarginBounds.Height)) {
width = e.MarginBounds.Width;
height = image.Height * e.MarginBounds.Width / image.Width; } else {
height = e.MarginBounds.Height;
width = image.Width * e.MarginBounds.Height / image.Height; }
private static Bitmap DrawImage() {
Bitmap myBitmap = new Bitmap(CC.palette.Width, CC.palette.Height);
Graphics g = Graphics.FromImage(myBitmap); g.Clear(Color.White);
CC.palette.graphics.Draw(g);
Pen p = new Pen(Color.Black, 1f);
Rectangle myRectangle = new Rectangle(1, 1, CC.palette.Width - 2, CC.palette.Height - 2);
g.DrawRectangle(p, myRectangle); p.Dispose(); return myBitmap; }
37
南昌航空大学科技学院学士学位论文
第四章 系统调试
4.1系统调试及测试过程
对于本次软件的测试与调试,由于在软件的设计过程中主要是按照分模块的方式进行程序的设计,因而大大方便了对软件的测试及调试。同时由于在本软件的设计中,程序代码往往集中在某一按钮或某一行为的操作之下,所以各个程序段都具有明显的独立性,这就使得对程序的调试变得较为简单、方便。
在本次软件的测试过程中,首先主要通过分模块的测试方法对软件进行测试,在测试的过程中将按照软件的要求对软件进行操作;在第一次的测试中,对软件将进行正确的操作,以确定对软件程序的设计是否符合语法的要求,同时是否正确的使用了其相应的组件进行了非法的操作。如果未能确定出错的具体位置,那么可以通过Microsoft Visual Studio 2008所提供的单步执行的方法对程序进行单步的跟踪,以确定具体的出错位置。
而如果程序并没有错误,但程序执行所产生的结果并不符合理论上的结果,那只能说明此错误是由于程序的编程思路的错误所造成的,那么对于这样的错误,单步的跟踪执行并不能发现其中的错误。此错误的调试只能通过对个人的编程思路进行检查,改变自己的编程思路。
同时,Microsoft Visual Studio 2008中也提供了强大的异常处理功能,重新生成解决方案指令就是Microsoft Visual Studio 2008所提供的一个强大的帮助。
4.2 系统测试结果分析
每个功能模块通过一系列测试后,其基本功能都能够很好的实现,系统的整体功能也没有很大的问题,不过也存在一些细节问题,下面将详细讲解修改过程
1.命名空间问题:用Microsoft Visual Studio 2008编程运行程序是出错,显示命名空间出错,经过老师的帮助,发现命名空间不能加\,导致不能定义,从而不能调用。修改后的程序才得以完美运行。
2.直线绘制的功能问题:程序运行后,当到直线绘制时,经常先是未响应,然后出错,通过Microsoft Visual Studio 2008的异常帮助器,如图所示
38
南昌航空大学科技学院学士学位论文
图4.1直线绘制的出错
正如图中所示未将对象引用设置到对象实例,也就是代码中的“w”没被引用。经过老师的指导修改,将对象引用到了对象实例,直线绘制功能得以完善。
39
南昌航空大学科技学院学士学位论文
第五章 结 论
经过将近一个学期的设计,基于C#多机联合绘图系统基本开发完毕。其功能基本符合任务要求,能够很好地实现多机联合绘图功能。
本次毕业设计采用的开发工具是Microsoft Visual Studio 2008,在开发过程中更加熟悉了该开发环境的使用方法,熟练掌握了一些开发软件的技巧,同时由于本次毕业设计还涉及的内容是数字图像处理,因而这次的毕业设计使本人对数字图像处理方面的知识也有了更多的了
总之,通过本次毕业设计,进一步加深了对软件设计的掌握,加强了对Microsoft Visual Studio 2008软件的使用。学习到了很多理论知识,加强了实践的能力。但由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,如用户界面不够美观,错误处理不够等多方面问题。这些都有待今后的进一步改善
40