paintpicture方法的参数问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 06:29:05
先汗一下,好多参数啊!
头四个好理解,关键是后四个参数如何得出
一般情况下,因为picturebox对象我是自己设置的坐标,但picture对象的坐标与长宽的单位显然与picturebox的不一样,我知道可以用scaleY和scaleX来转换,但用起来好麻烦!!!看起来也不简捷
现在我要在一个picturebox中载入一个picture对象中的区域,需要计算后面四个参数。比如如下条件该如何写呢???:
picturebox.scale(0,0)-(4,8)
Dim pic As Picture
Set pic = LoadPicture("1.BMP")
picture对象中的坐标与长宽单位显然与我的不一样如果要将图片分成4列8行,将最右下角的区域载入picturebox中用paintpicture方法
语句如: picturebox.paintpicture 0,0,4,8,?,?,?,?

do
感谢
doeven
loop
先谢谢hmkikikaki的答案,对于paintpicture方法的参数做了细仔的说明。只是如题我的picturebox的坐标单位是自定义的,同时要求将picture对象的右下脚区域占满picturebox对象,关键进问如何转换单位与平分区域,为感谢大家帮助再加10分

再补充:::其实这个问题我昨天都实现了,并不需要必须改成pixel,只是用的是scaleX和scaleY来实现的,觉得很麻烦,看看有没有什么更好的办法?

下面的代码同时包括了分割方法和绘制方法:
dim pwid as long
dim phgt as long

pwid = pic.Width / 4'分成4列
phgt = pic.Height / 8'分成8行

picuture1.PaintPicture pic, 0, 0, picture1.Width, picture1.Height, pwid * 3, phgt * 7, pwid, phgt'取右下角的图像并拉伸至pictureBox的整个窗口.

有一点需要注意,由于pic是图片对象,所以窗体和picture1的scalemode都应该改为:pixel

首先说说PaintPicture的语法格式:

PaintPicture Pic,destX,destY,destWidth,destHeight,scrX,scrY,scrWidth,scrHeight

其中Pic:为图片对象, 如图形框Picture等;

destX,destY:目标图像的位置(图像区域左上角的坐标);

destWidth,destHeight:目标图像尺寸;

scrX,scrY:原图像的裁剪坐标;

scrWidth,scrHeight:原图像的裁剪尺寸;

然后说你程序中的问题:
你创建了一个Picture对象,他的长度单位和picturebox 的长度单位不一样,一个是twip,一个是pixel,因此不能直接用

所以,最右下角的载入方法为:
picWid=pic.width/4
picHgt=pic.height/8
picture1.paintpicture pic,picwid*3,pichgt*7,picwid,pichgt,picwid*3,pichgt*7,picwid,pichgt

最后说说更高效的实现方法:
API函数Bitblt
使用方法和paintpicture差不