利用PictureClip进行图像局部处理
只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的利用PictureClip进行图像局部处理,手机电脑控们准备好了吗?一起看过来吧!
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:windowssetup.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
IfXPicture1.ScaleWidth/2Then
px=Picture1.Width/2
Else
px=0
EndIf
IfYPicture1.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->