VB中控件Line的问题
DimlyAsLongDimlscaleheightAsLongDimlscalewidthAsLongScaleMode=vbPixelslscaleheight=Sc...
Dim ly As Long
Dim lscaleheight As Long
Dim lscalewidth As Long
ScaleMode = vbPixels
lscaleheight = ScaleHeight
lscalewidth = ScaleWidth
DrawStyle = vbInvisible
FillStyle = vbFSSolid
For ly = 0 To lscaleheight
FillColor = RGB(0, 0, 255 - (ly * 255) \ lscaleheight)
Line (-1, ly - 1)-(lscalewidth, ly + 1), , B
在这个程序中, Line (-1, ly - 1)-(lscalewidth, ly + 1), , B中的 (-1, ly - 1)-(lscalewidth, ly + 1)是矩形的两个对角点吗?但是我把它改成 (-1, ly - 1)-(lscalewidth, ly)怎么就无法实现之前的功能了?改成 (-1, ly )-(lscalewidth, ly )便可以~为什么,求高手详细的解答。。。 展开
Dim lscaleheight As Long
Dim lscalewidth As Long
ScaleMode = vbPixels
lscaleheight = ScaleHeight
lscalewidth = ScaleWidth
DrawStyle = vbInvisible
FillStyle = vbFSSolid
For ly = 0 To lscaleheight
FillColor = RGB(0, 0, 255 - (ly * 255) \ lscaleheight)
Line (-1, ly - 1)-(lscalewidth, ly + 1), , B
在这个程序中, Line (-1, ly - 1)-(lscalewidth, ly + 1), , B中的 (-1, ly - 1)-(lscalewidth, ly + 1)是矩形的两个对角点吗?但是我把它改成 (-1, ly - 1)-(lscalewidth, ly)怎么就无法实现之前的功能了?改成 (-1, ly )-(lscalewidth, ly )便可以~为什么,求高手详细的解答。。。 展开
展开全部
DrawStyle = vbInvisible的意思是把绘图的框线设为透明,因此:
Line (-1, ly - 1)-(lscalewidth, ly + 1), , B '这时候边框是透明的,是看不到的,而中间有1像素的高度显示的是FillColor颜色;
Line (-1, ly - 1)-(lscalewidth, ly), , B '这时候矩形的上下边框是紧挨着的,而且是透明的,是看不到的,因此整个矩形就都变成透明了,看不到了;
Line (-1, ly)-(lscalewidth, ly), , B '这时候矩形的上下边框是重叠的,这种情况VB会进行特殊处理,把它看作是直线(不再是矩形),显示的是FillColor颜色(因为直线是没有边框的)。
因此,上述情况1、3可实现你要的功能,而2则不能实现。
事实上只要把DrawStyle = vbInvisible这行删掉或改为DrawStyle = 0则上述三种情况都变得OK了!
Line (-1, ly - 1)-(lscalewidth, ly + 1), , B '这时候边框是透明的,是看不到的,而中间有1像素的高度显示的是FillColor颜色;
Line (-1, ly - 1)-(lscalewidth, ly), , B '这时候矩形的上下边框是紧挨着的,而且是透明的,是看不到的,因此整个矩形就都变成透明了,看不到了;
Line (-1, ly)-(lscalewidth, ly), , B '这时候矩形的上下边框是重叠的,这种情况VB会进行特殊处理,把它看作是直线(不再是矩形),显示的是FillColor颜色(因为直线是没有边框的)。
因此,上述情况1、3可实现你要的功能,而2则不能实现。
事实上只要把DrawStyle = vbInvisible这行删掉或改为DrawStyle = 0则上述三种情况都变得OK了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询