C# GDI+编程之基础篇(三)

原创|其它|编辑:郝浩|2009-07-10 09:37:28.000|阅读 533 次

概述:本文先简单介绍了GDI+的工作机理,然后说明了图像操作中的缩略图,缩放与保存,以及在实际开发中的图像操作。这些仅是.NET C#环境下关于GDI+编程的一些基本的实用操作片断。供大家参考!

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

注意,在此新添加的代码分别在原来的图像宽度和高度上乘以放大因子以生成一个放大的图像。然后,必须相应地修改paint事件的处理器。如下所示:

 

private void Form1_Paint(object sender, PaintEventArgs e)
...{
if (curImage != null && i==0)
...{
Graphics g = this.CreateGraphics();
g.DrawImage(curImage, new Rectangle
(AutoScrollPosition.X,
AutoScrollPosition.Y ,
(int)(this.ClientRectangle.Width * curZoom),
(int)(ClientRectangle.Height * curZoom)));
}
}

该图像应该有根据放大因子的相应的高度和宽度。下面,我们来看一下mnu200Zoom菜单项相应的事件处理器:

 

private void mnu200_Click(object sender,System.EventArgs e)
...{
if(curImage != null)
...{
curZoom = (double)200/100;
i++;
Invalidate();
}
}

最后,我们来看一下mnuThumbNail菜单项相应的事件处理器:

 

1private void mnuThumbnail_Click(object sender, EventArgs e)
2...{
3if(curImage != null)
4...{
5i++;
6//回调
7Image.GetThumbnailImageAbort tnCallBack =
8new Image.GetThumbnailImageAbort(tnCallbackMethod);
9//得到缩略图图像
10Image thumbNailImage = curImage.GetThumbnailImage
11(100, 100, tnCallBack, IntPtr.Zero);
12//创建一个Graphics对象
13Graphics tmpg = this.CreateGraphics();
14tmpg.Clear(this.BackColor);
15//画缩略图图像
16tmpg.DrawImage(thumbNailImage, 10, 10, thumbNailImage.Width, thumbNailImage.Height);
17//释放掉Graphics对象
18tmpg.Dispose();
19}
20
21}
22

在此,我们首先创建一个GetThumbnailImageAbort类型的变量并且赋给它值tnCallbackMethod()—这是通过传递给该方法GetThumbnailImageAbort实现的。然后,它创建一个新的Image类的实例以存储GetThumbnailImage方法返回的图像—此后,这个方法将用于把缩略图绘制到屏幕上。

四、小结

在本文中,我仅讨论了.NET C#环境下关于GDI+编程的一些基本的实用操作片断。在以后的文章中,我们将逐渐展开对.NET GDI+编程高级特征的探讨。

【注】 ①本文源码在Windows XP Professonal+VS2005环境下调试通过;

②本示例中私有变量的i的引入仅为了把屏幕重绘与缩略图绘制区别开来,读者可考虑其它更巧妙的办法;

③图像重绘及滚动过程中出现屏幕抖动现象,读者可结合有关图像绘制双缓冲技术予以改进。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT168

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP