vb paintpicture

PrivateSubopenfile()OnErrorGoTobCommonDialog1.Filter="jpg,bmp,gif图片文件|*.jpg*;*.bmp*;*... Private Sub openfile()
On Error GoTo b
CommonDialog1.Filter = "jpg,bmp,gif图片文件|*.jpg*;*.bmp*;*.gif*|所有文件|*.*"
CommonDialog1.ShowOpen
Picture1.Cls
Picture2.Visible = False
Picture2.Picture = LoadPicture(CommonDialog1.FileName)
xx = (Picture1.Width / 2 - Picture2.Picture.Width / 2)
yy = CInt(Picture1.Height / 2 - Picture2.Picture.Height / 2)
Picture1.PaintPicture Picture2.Picture, xx, yy
save = True
b:
End Sub

请问为什么调用这个过程不能在picture1上画出图形?但是我把xx和yy改为常数后就可以画出来了?
请高手解释一下。
我是想做一个绘图程序,可以编辑打开的图片,并且是打开的图片居中
http://z.baidu.com/question/121502290.html
到时候再给你分
展开
 我来答
果建翼
2009-10-18 · TA获得超过7929个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2481万
展开全部
自己单步跟踪一下,看看xx和yy到底算出来是什么值,是不是你期望的值。

可能是你缩放单位的问题。

建议不要使用Picture属性的宽高而直接使用PictureBox对象的宽高,以免因为单位不同而导致数值计算出错。
(PictureBox的宽度单位是它的父控件的ScaleMode指定的(默认是Twip),而Picture属性的单位是HiMetric单位,往往是不一样的,不经换算而使用就会导致计算出错)

你可以这样试试:

将你的Picture2的AutoSize属性设为True
然后将下面那块改成这样:
xx = (Picture1.Width / 2 - Picture2.Width / 2)
yy = (Picture1.Height / 2 - Picture2.Height / 2)

这样的话一般情况下单位就会相同。
(不过如果做绘图程序的话仍然建议将所有控件的单位设为Pixel)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式