科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C# GDI+编程之基础篇(3)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

注意,在此新添加的代码分别在原来的图像宽度和高度上乘以放大因子以生成一个放大的图像。

来源:soft6 2008年5月16日

关键字: 编程 GDI+ C# Windows

  • 评论
  • 分享微博
  • 分享邮件

注意,在此新添加的代码分别在原来的图像宽度和高度上乘以放大因子以生成一个放大的图像。然后,必须相应地修改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的引入仅为了把屏幕重绘与缩略图绘制区别开来,读者可考虑其它更巧妙的办法;
③图像重绘及滚动过程中出现屏幕抖动现象,读者可结合有关图像绘制双缓冲技术予以改进。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章