VB PaintPicture (第1篇)
1.函数参数
对象.PaintPicture picture,x1,y1,[width1],[height1],[x2],[y2],[width2],[height2],[opcode]
对象: 可以是 Form,picturebox或printer等
picture :源图片
x1,y1 :对象上的起点坐标
width1,height1 :对象上的宽和高
x2,y2 : 截取源图片的起点坐标
width2,height2: 截取原图片的宽和高
opcode :操作码,这里先不做介绍
这个函数是这样理解的:简单来说就是从源图片截取一部分放到目标对象的规定位置。详细来说就是 在 picture参数指定图片 上 截取 从 (x2,y2)点开始的大小为width2,height2的部分,拉伸放在 对象的 (x1,y1)开始的 大小为width1,height1的地方。
这里x1,y1,width1,height1,x2,y2,width2,height2可正可负(宽向右为正)(高向下为正),可以非常灵活的使用。
2.简单的图片编辑
有两个picturebox 控件,分别为pic1,pic2,现在pic1中加载了图片,我们要将pic1中的图片处理后放入pic2
1.复制
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, 0, pic1.Width, pic1.Height, 0, 0, pic1.Width, pic1.Height
首先清空pic2,之后用paintpicture函数,从pic1.picture上的(0,0)位置开始,截取pic1.width,pic1.height 大小的图片,拉伸放入 pic2的(0,0)位置开始,大小为pic1.width,pic1.height 的 地方,如图
如果我们代码改成这样
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, 0, pic2.Width, pic2.Height, 0, 0, pic1.Width, pic1.Height
那就变成了 从pic1.picture上的(0,0)位置开始,截取pic1.width,pic1.height 大小的图片,拉伸放入 pic2的(0,0)位置开始,大小为pic2.width,pic2.height 的 地方,如图
2.放大,缩小
放大1.5倍
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, 0, pic1.Width * 1.5, pic1.Height * 1.5, 0, 0, pic1.Width, pic1.Height
从pic1.picture上的(0,0)位置开始,截取pic1.width,pic1.height 大小的图片,拉伸放入 pic2的(0,0)位置开始,大小为pic1.width*1.5,pic1.height*1.5 的 地方。
同理,缩小图片1.5倍代码为
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, 0, pic1.Width / 1.5, pic1.Height / 1.5, 0, 0, pic1.Width, pic1.Height
3.左右翻转,上下翻转
左右翻转代码
pic2.Cls
pic2.PaintPicture pic1.Picture, pic1.ScaleWidth, 0, -pic1.ScaleWidth, pic1.ScaleHeight, 0, 0, pic1.Width, pic1.Height
这里可以看到负的参数。 我们把pic1的图片从左上角往右下方拎起来,在放入pic2时却从右上角开始,往左下角放。这样就实现了图片的左右翻转。上下翻转同理。代码如下
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, pic1.ScaleHeight, pic1.ScaleWidth, -pic1.ScaleHeight, 0, 0, pic1.Width, pic1.Height
4.反转(反色)
这里涉及到一个opcode参数,博主还没详细学习。。只给出代码和图
pic2.Cls
pic2.PaintPicture pic1.Picture, 0, 0, , , , , , , vbNotSrcCopy
会变得好可怕。。
5.保存
SavePicture pic2.Image, "F:\桌面\1.jpg"