当前位置:首页 > 网络编程 > 软件语言 > .NET > VB6.0自制Line控件时实现X1,Y1,X2,Y2属性

VB6.0自制Line控件时实现X1,Y1,X2,Y2属性

点击次数:69 次 发布日期:2008-11-06 08:06:22 作者:源代码网
源代码网推荐
广告载入中
Line控件本来是最简单的一个控件,但它太简单了,以至于不提供我们想要的一些事件,为了增强它的功能,我自己制作了一个Line控件,还
源代码网推荐
源代码网推荐给她取名叫作MLine控件。
源代码网推荐
源代码网推荐制作控件的方法请参看"MSDN - Visual Basic 文档 - 使用Visual Basic -部件工具指南 - 创建ActiveX部件"中的"创建一个ActiveX控件"和"
源代码网推荐
源代码网推荐建立ActiveX控件"部分。
源代码网推荐
源代码网推荐
源代码网推荐VB自带的Line控件有X1,X2,Y1,Y2四个属性,没有Left,Top,Width,Height这四个属性,通过调整X1-Y2四个属性的值,来改变线条的位置和形状
源代码网推荐
源代码网推荐。但,我们的Mline控件中只有LTWH这四个属性,所以MLine控件的关键在于如何把LTWH四个属性跟X1-Y2四个属性联系起来。
源代码网推荐
源代码网推荐很显然,如果MLine控件中的线条是从左上角到右下角的话,那么:
源代码网推荐A1=Left : B1=Top : A2=Left Width : B2=Top Height
源代码网推荐这里我用(A1,B1)表示左上角的坐标,(A2,B2)表示右上角的坐标,这样我就可以通过A1-B2来确定控件的区域了,但并不能确定直线的形状,也
源代码网推荐
源代码网推荐就是说直线是撇倾斜还是捺倾斜,通过A1-B2无法确定,我们需要一个标志变量来记录这个倾斜值,下面会说到。
源代码网推荐

源代码网推荐好了,A1-B2显然和LTWH是一一对应的,我们可以写出:
源代码网推荐Left=A1 : Top=B1 : Wdith=A2-A1 : Height=B2-B1
源代码网推荐A1=Min(X1,X2) : B1=Min(Y1,Y2) : A2=Max(X1,X2) : B2=Max(Y1,Y2)
源代码网推荐通过上面的关系,我们把X1-Y2和LTWH联系起来了。
源代码网推荐那么你去做吧,基本上这个线条可以画出来,但不会太精确,在线条接近水平或垂直的时候就会有误差了,出现误差的原因是,控件有一个最
源代码网推荐
源代码网推荐小宽度和最小高度!你可以随便建立一个EXE工程观察一下常用的控件,他们的Height/Width最小只能设置到15或者更大一些,而UserControl
源代码网推荐
源代码网推荐,也就是我们的控件,其Height/Width最小只能设置到30,所以如果没有考虑到这个因素,做出来的MLine控件总会出现误差的,如果你把做出
源代码网推荐
源代码网推荐来的MLine控件,以(X1,Y1)为圆心,让(X2,Y2)绕着它画圆,你会发现线条的一些细微变化,这种变化是不能容忍的。
源代码网推荐
源代码网推荐所以MLine控件的重点是要理解这个控件的真实形状,它不仅仅是一个长方形的区域内做一条对角线,而是这样的一个样子:
源代码网推荐在它的区域当中,有一片冗余区域,我们不能在这里画线,理由是这个冗余区域正是这个控件的最小区域。这个冗余区域我设置它为一个空心
源代码网推荐
源代码网推荐矩形,它和MLine控件的整个区域是重合的,它中间的空心区域才是我们画线的地方。空心区域应该是由最小宽度和最小高度决定的,让MinWid

源代码网推荐
源代码网推荐th表示最小宽度,MinHeight表示最小高度,那么空心区域和控件区域的左边界=MinWidth/2,右边界=MinWidth/2,上边界=MinHeight/2,下边
源代码网推荐
源代码网推荐界=MinHeight/2,你应该可以想象出来这个样子。
源代码网推荐
源代码网推荐
源代码网推荐好了,这就是MLine控件的重点所在,我们再来调整一下X1-Y2和LTWH之间的关系,当然我还是先用A1-B2来解释,这样清楚一点:
源代码网推荐A1=Extender.Left MinWidth/2
源代码网推荐B1=Extender.Top MinHeight/2
源代码网推荐A2=Extender.Left Extender.Width-MinWidth/2
源代码网推荐B2=Extender.Top Extender.Height-MinHeight/2
源代码网推荐
源代码网推荐A2=A1 Extender.Width-MinWidth
源代码网推荐B2=B1 Extender.Height-MinHeight
源代码网推荐
源代码网推荐Extender.Left=A1-MinWidth/2
源代码网推荐Extender.Top=B1-MinHeigth/2
源代码网推荐Extender.Width=A2-A1 MinWidth
源代码网推荐Extender.Height=B2-B1 MinHeight
源代码网推荐
源代码网推荐其中A1=Min(X1,X2)
源代码网推荐 B1=Min(Y1,Y2)
源代码网推荐 A2=Max(X1,X2)
源代码网推荐 B2=Max(Y1,Y2)
源代码网推荐看到了吗?A1-B2和LTWH建立了一一对应的关系,而通过Min/Max方法的计算,我们也可以使X1-Y2和LTWH建立对应的关系,但不是一一对应的。

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华