• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#中GDI+功能扩展:区域图像选择功能

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      本文程序下载/Files/xqzhao/DrawDragRect.rar(实例是用C#写的一个基于Form对程序,它显示一个文件打开对话框,打开一个图像文件。当用户选择一个图像文件之后,他可以选择图像的一个小区域,这个小区域就会被发送到另外一个form上单独显示。)

程序说明     
      在大部分的图像处理应用程序(如Adobe's Photoshop, Google's Picasa or Coral's Paint Shop Pro)中,它们都需要能够选择图片的一个部分。或许用户希望放大图像的这个区域,或者是将要对这块被选取进一步处理。
      无论是那个应用,大部分的图像处理软件都需要支持这个功能。当我们在MFC框架下面编写程序的时候,它们通过CDC类的DrawDragRect (…). DrawDragRect (…) API来实现。
      尽管,几乎所有的MFC的API都对应于Win32的API,然而,微软尽然没有提供一个对应于MFC中DrawDragRect (…) API的Win32 API。于是,在.net框架下面,就产生了这个问题,因为,我们找不到一个这样的API。
       因此,当我们用C#编写一个图像处理软件的时候,这个问题变得非常突出,没有一个DrawDragRect (…) 类似的API来完成图像选择功能。而且,找不到一个能通过pInvoke调用的WIN32的api。这篇文章用C#语言实现了DrawDragRect (…) API,你可以很容易地在你的程序中调用它。

实现细节
      整个代码嵌在CDrawDragRect.cs 文件中,实现于CDrawDragRect类里。如果你的程序需要使用这样的功能,只需要把你的程序从以前的Form集成,改到CDrawDragRect的集成关系就可以了。
public partial class MainForm : CDrawDragRect
//Form
{
    ...
    //other implementation details skipped for brevity
}
      另外,你还需要做一件事情:在CDrawDragRect类里void DrawDragRect(MouseEventArgs e)函数是处理这个功能的,它在鼠标事件OnMouseMove(MouseEventArgs e)发生时,响应其动作。
DrawDragRect(MouseEventArgs e)函数,首先创建4个Windows区域:
rgnOld
rgnNew
rgnDiff
rgnDiffOld
rgnDiff记录了rgnOld 和rgnNew的差值……


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#基础知识回顾---你不知道的LazyT发布时间:2022-07-13
下一篇:
c#中几个取整数的区别发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap