网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.让VisualBasic程序在新UserLogin.
.静态变量慢于动态变量.
.浅谈用VB6.0编写木马程序.
.VB游戏写作技巧(2)网络篇.
.Excel中Basic程序的运行.
.VB中APP对象及其应用.
.数据报表设计器在多层结构开发的.
.VisualBasic属性、方法和事件一.
.VB编程步步高-打印篇(二).
.在VB应用程序中调用Excel2000.
.VisualBasic程序中如何启动默认的.
.数据访问控制--多客户环境下VB数.
.VB从零开始编外挂(五).
.怎样限制鼠标移动.
.一些字符串操作的问题和回答.
.在关机或Logff前信息的拦截.
.VisualBasic属性、方法和事件三.
.认识一下VB6.0的编程环境.
.VisualBasic串口通信程序设计.
.VBCOM基础讲座之类的测试.

利用PictureClip进行图像局部处理

发表日期:2006-2-27


在图像的处理过程中经常需要对图像进行局部放大或其它处理操作,在VB中提供了一个非常实用的图像处理控件PictureClip,利用此控件可以方便的完成图像的局部放大或缩小操作。PictureClip控件的功能就是对一个原始位图进行剪裁,根据用户的需要可以有两种剪裁方法,第一种方法是确定固定的剪裁尺寸,通过确定横向与纵向的剪裁份数,控件均匀地把原始位图分成不同的图像块,通过序号可以访问每一个图像块,此时需要的属性有:PicClip1.Picture:指定被剪裁的图像;PicClip1.Cols:确定剪裁的横向份数;PicClip1.Rows:确定剪裁的纵向份数;PicClip1.GraphicCell(i):访问第i个图像块;另一种剪裁方法是随机剪裁,确定剪裁的起点,再确定需要剪裁的横向与纵向尺寸,此固定区域内的图像即剪裁为一可访问的图像,涉及的属性有:          PictureClip1.ClipX:指定剪裁的横向起点坐标;
     PictureClip1.ClipY:指定前裁的纵向起点坐标;                PictureClip1.ClipHeight:指定剪裁的横向长度;       
     PictureClip1.ClipWidth:指定剪裁的纵向长度;
     PictureClip1.Clip:访问被剪裁的图形;
  还有两个重要的属性,即StretchX和StretchY,此属性指定被剪裁目标的图像的大小,当此值与原始位图尺寸不相同时,将引起剪裁图像的放大或缩小,这就是利用此控件进行图像局部放大或缩小的原理;
  利用上述两种剪裁方法均可以进行图像的局部放大或缩小处理,但在实际应用中还是第二种剪裁方法更为实用,在具体的编程时还应注意以下几点:
  1.在PictureClip的StretchX及其它属性中均以象素为单位,所以在对图像进行操作时必须置作图单位为象素,即使用ScaleMode=3命令;
  2.在进行随机剪裁时,如果使用固定的剪裁尺寸,当剪裁坐标移到图像的边缘时,图像实际尺寸小于剪裁尺寸,将引起边界溢出,解决的办法是始终以鼠标坐标点之后的图像尺寸为剪裁尺寸,然后再调整StretchX及StretchY值为剪裁尺寸的固定倍数,即可实现局部图像固定比率的放大或缩小操作;
  3.放大或缩小的局部图像需要装入图像框或其它容器控件中,此窗口的位置必须是灵活变化的,即自动让开被剪裁的区域,可通过判断被剪裁区域起点的位置来临时调整图像框Letf及Top属性来完成;

  在下面是一个完整的演示程序,需要在窗体中放置一个PictureClip1及两个PictureBox控件,Picture1可为任意大小,而Picture2最好接近窗体的1/4,用于显示局部放大或缩小的图像,之后把下面的代码填入相应的事件之中,运行程序之后,将在屏幕上显示图像,用鼠标在此图像上移动,如果按下左键移动则实现图像的局部放大,按下右键移动实现图像的局部缩小,不按下任何键则只在小窗口内显示原尺寸的局部图像,剪裁的起点是鼠标当前位置。

  以上程序及方法在WINDOWS95系统下、VB5.0环境下调试通过。

  附原程序:(下载)
  注释:准备窗体和图像框
PrivateSubForm_Load()
  Picture1.ScaleMode=3
  Picture1.Picture=LoadPicture("c:\windows\setup.bmp")
  Form1.Width=Screen.Width
  Form1.Height=Screen.Height
  Form1.Top=0
  Form1.Left=0注释:修改PICTURE尺寸与屏幕相同
  Picture1.Width=Screen.Width
  Picture1.Height=Screen.Height
  Picture1.Top=0
  Picture1.Left=0
  PictureClip1.Picture=Picture1.Picture
EndSub
注释:移动鼠标放大或缩小图像
PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  Dimpx,py,LeftDown,rightDown,num
  LeftDown=(ButtonAndvbLeftButton)>0rightDown=(ButtonAndvbRightButton)>0
  IfLeftDownThennum=2注释:左键按下放大二位
  Else
    IfrightDownThennum=1/2注释:右键按下缩小
    Elsenum=1注释:无键按下原来尺寸
    EndIf
  EndIf
  IfX<Picture1.ScaleWidth/2Then
    px=Picture1.Width/2
  Else
    px=0
  EndIf
  IfY<Picture1.ScaleHeight/2Then
    py=Picture1.Height/2
  Else
    py=0
  EndIf
  Picture2.Left=px
  Picture2.Top=py注释:以上实时调整小窗口坐标
  Form1.Caption=Str$(X) ":" Str$(Y)PictureClip1.ClipX=X注释:以当前鼠标位置为起点
  PictureClip1.ClipY=Y
  PictureClip1.ClipHeight=Picture1.ScaleHeight-Y
  PictureClip1.ClipWidth=Picture1.ScaleWidth-X
  PictureClip1.StretchX=(Picture1.ScaleWidth-X)*num
          PictureClip1.StretchY=(Picture1.ScaleHeight-Y)*num
  Picture2.Picture=PictureClip1.Clip注释:小窗口显示图像
EndSub->

上一篇:图像在图片框中的滚动 人气:3715
下一篇:雨滴式的显示图片 人气:2944
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐