大量的很多地方需要动态交替显示文字和图片,
Label是最方便的(因为背景是Image控件——注意,不是PictureBox!不能用Print语句的),
但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
若将Label设为禁用的话,文字就变灰,很难看。请问,如何让Label控件在禁用状态下其文字不变灰?
Label是最方便的(因为背景是Image控件——注意,不是PictureBox!不能用Print语句的),
但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
若将Label设为禁用的话,文字就变灰,很难看。请问,如何让Label控件在禁用状态下其文字不变灰?
//把label别写click的代码 Label的autosize=true borderstyle=0
流氓啊,郁闷另外,Label背后的控件也会动态改变的
如果是这样的话,可以在LABLE的CLICK事件中去调用IMAGE的鼠标事件:
例子:
SUB LABEL1_CLICK()
IMAGE1_CLICK
END SUB
但问题是,Label所在的位置,其背后显示的控件是动态的,
就是说在某个时间里是imgABC(N),在另一个时间里可能是imgBBB(MM),
另外,对点击时的XY位置也有所要求(所以实际用的是MouseDown事件)
背后的控件,若是容器套容器套容器
这样的话,用Label克隆这个基本上很难,呵呵:)
什么容器套容器,暂且不论(我觉得那是不可能的,因为LABEL控件根本就放不到容器控件的前面,除非放在容器里面)
如果只是IMAGE控件的话,建议楼主稍微改下程序,不要用IMAGE.VISIBLE之类的显示方案,而改用: ME.PAINTPICTURE IMAGE(INDEX).PICTURE 来显示图片(或者BITBLE之类)
至于上面的文字,那就简单了,用这个API: TextOut
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
将窗体的SCALEMODE设为PIXEL,然后因为TEXTOUT和PAINTPICTURE都是通过PIXEL为单位来定位,所以可以非常简单快速。(点击事件可以用FORM_MOUSEDOWN判断X,Y参数位置来做,X,Y的有效位置就是上面你PAINTICTUR的位置)
简直是决配
而且要充分利用到Image.Stretch的功能。另外,用的不是IMAGE.VISIBLE,而是Move,的方法,
就是说Label的文字位置基本不变,但其中的文字内容却会变,
其底下的多个不同的Image框,经常要移动,放大缩小之类的,
如果每一点改变都要VB写代码重绘估计VB会被偶折磨死,呵呵:)其实,最早的目的只是想找一个不让Label变灰的办法,
用Label,就是看中它的便捷性,觉得在这里只有它是最适合的(代码省、系统开销小、又方便)
当然啦,如果VB实在没有办法的话,最终的取舍那就还是让它继续灰吧,可怜的小灰:(
对这个大量动态图形变化自己底层绘图?偶觉得太PS:简直是决配——绝配?^-^
呵呵,其实真要用你的方法,用控件来做,才真的会把VB折腾死.
N年前<黑客帝国2>全球同步上映的时候,我给上海地区广告商做的那个宣传广告小游戏就是直接用VB贴图的,并且图像来源是摄像头叠加透明贴图再叠加文本,每秒二十多祯的速度,一点都不慢.
不要看不起GDI贴图,速度还是很快的,不信你试试这个:
http://blog.yesky.com/89/wallescai/1680589.shtml
还有若干随机飘的Image框(全处于文字下层,但各图片互有层叠,并且有时会自动放大或缩小)。
现在只有当图片框正好飘到文字框下时,点击该Image框才有效,
弹出对话框,恭喜你点中了NN图,
可能的情况——有多张图片都在文字框下面(互相交叠),
只以用户鼠标正好点到的那张为准如何让那个文字框不变会呢?
背景是窗体,白色的,要改吗?
目的就是为了让其底下的Image获得鼠标事件!!!问题是禁用了Label,其文字就灰了(本来应该是彩色的)
只要解决了显示颜色问题就可以。好吧,搞得头都晕了,偶放弃一切点击事件,
也不管底下什么Image控件了,只问一个问题:【问】如何让Label控件在禁用状态下其文字不变灰? 别问我干什么用,就这一个技术问题而已,呵呵:)