您的位置:程序门 -> vb -> 控件



关于picturebox的宽度和像素问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于picturebox的宽度和像素问题[已结贴,结贴人:shenshenmimixixi]
发表于:2007-11-21 15:33:43 楼主
在我用picturebox的line画线的时候,我想在picture1的最右端画线,于是我获取picture的picture1.width,画线的时候picture1.line   (w   -   1,   y)-(w,   y1),   rgb(0,   255,   0)来画,我已经设置了picture的picture1.autoredraw   =   false           picture1.scalemode   =   3   但是画的线好像超过了picture的范围,如果把w改小就可以显示出来。是不是.width
获取的值不是像素值,还是什么原因啊。
发表于:2007-11-21 15:40:561楼 得分:10
默认单位为twips,你可以查看screen.twipsperpixelx和screen.twipsperpixely,通常它们为15,1/15远远没有到一个像素。
建议设置picture1.scalemode=vbpixels。
发表于:2007-11-21 15:50:422楼 得分:0
picture1.scalemode       =       3就是设置成了picture1.scalemode=vbpixels啊,呵呵。但是你说的twips和像素的关系好像就是15倍。我转换了一下可以显示出来了,但是这样很麻烦,能不能直接得到picture1的像素值。这样好点。
发表于:2007-11-21 17:08:303楼 得分:0
所以要用scalemode=vbpixels,这样就不存在换算问题了。
发表于:2007-11-21 17:18:204楼 得分:0
我这样设置过了啊,可是我用.width得到的值不是像素的值,是15倍的那个值。
发表于:2007-11-21 17:30:145楼 得分:10
用scalewidth

private   sub   command1_click()
'picture1.line   (picture1.scalewidth   -   500,   10)-(picture1.scalewidth,   10),   vbred
msgbox   "picture1.scalewidth:"   &   cstr(picture1.scalewidth)   &   vbcrlf   &   "picture1.width:"   &   cstr(picture1.width)   &   vbcrlf   &   "picture1.width:"   &   cstr(picture1.width   *   screen.twipsperpixelx)
end   sub

private   sub   form_load()
me.scalemode   =   3

end   sub
发表于:2007-11-21 17:42:016楼 得分:0
ok问题解决,但我不知道怎么加分。我稍微研究一下,马上加分   呵呵
发表于:2007-11-22 09:09:167楼 得分:0
scalemode是针对控件或窗体内部的clientarea的。
picture1.scalemode=vbpixels后,picture1.scalewidth和picture1.scaleheight就是以像素为单位的内部客户区的大小;但是form1.scalemode=vbtwips(默认),所以picture1.width和picture1.height还是以缇为单位的(应为放在form1的客户区上)。


快速检索

最新资讯
热门点击