大量的很多地方需要动态交替显示文字和图片,
Label是最方便的(因为背景是Image控件——注意,不是PictureBox!不能用Print语句的),
但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
若将Label设为禁用的话,文字就变灰,很难看。请问,如何让Label控件在禁用状态下其文字不变灰?

解决方案 »

  1.   

    但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
    //把label别写click的代码 Label的autosize=true  borderstyle=0
      

  2.   

    没用啊,依然是Label获得点击事件,而其背后的控件无法获得焦点:((因文字比较大,所以用户基本上直接往文字上点,呵呵)即使设置Label成透明样式,但实际上,它占的那块矩形区域还是它的地盘,
    流氓啊,郁闷另外,Label背后的控件也会动态改变的
      

  3.   

    楼主是否对IMAGE控件的CLICK或者MOSEMOVE之类的事件有编程?
    如果是这样的话,可以在LABLE的CLICK事件中去调用IMAGE的鼠标事件:
    例子:
    SUB LABEL1_CLICK()
    IMAGE1_CLICK
    END SUB
      

  4.   

    所见略同,本来俺也想这样滴,
    但问题是,Label所在的位置,其背后显示的控件是动态的,
    就是说在某个时间里是imgABC(N),在另一个时间里可能是imgBBB(MM),
    另外,对点击时的XY位置也有所要求(所以实际用的是MouseDown事件)
    背后的控件,若是容器套容器套容器
    这样的话,用Label克隆这个基本上很难,呵呵:)
      

  5.   

    某个时间里是imgABC(N),在另一个时间里可能是imgBBB(MM)...
    什么容器套容器,暂且不论(我觉得那是不可能的,因为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的位置)
    简直是决配
      

  6.   

    失误失误,容器套容器是不可能,谢谢大虾指出,呵呵:)之所以没有使用PictureBox是因为。有N多张图要同时显示,
    而且要充分利用到Image.Stretch的功能。另外,用的不是IMAGE.VISIBLE,而是Move,的方法,
    就是说Label的文字位置基本不变,但其中的文字内容却会变,
    其底下的多个不同的Image框,经常要移动,放大缩小之类的,
    如果每一点改变都要VB写代码重绘估计VB会被偶折磨死,呵呵:)其实,最早的目的只是想找一个不让Label变灰的办法,
    用Label,就是看中它的便捷性,觉得在这里只有它是最适合的(代码省、系统开销小、又方便)
    当然啦,如果VB实在没有办法的话,最终的取舍那就还是让它继续灰吧,可怜的小灰:(
    对这个大量动态图形变化自己底层绘图?偶觉得太PS:简直是决配——绝配?^-^
      

  7.   

    ...如果每一点改变都要VB写代码重绘估计VB会被偶折磨死,呵呵...--------------------------
    呵呵,其实真要用你的方法,用控件来做,才真的会把VB折腾死.
    N年前<黑客帝国2>全球同步上映的时候,我给上海地区广告商做的那个宣传广告小游戏就是直接用VB贴图的,并且图像来源是摄像头叠加透明贴图再叠加文本,每秒二十多祯的速度,一点都不慢.
    不要看不起GDI贴图,速度还是很快的,不信你试试这个:
    http://blog.yesky.com/89/wallescai/1680589.shtml
      

  8.   

    举个例子吧,在一个窗体内随机漂浮着一个透明的显示着当前系统时间的彩色文字框,
    还有若干随机飘的Image框(全处于文字下层,但各图片互有层叠,并且有时会自动放大或缩小)。
    现在只有当图片框正好飘到文字框下时,点击该Image框才有效,
    弹出对话框,恭喜你点中了NN图,
    可能的情况——有多张图片都在文字框下面(互相交叠),
    只以用户鼠标正好点到的那张为准如何让那个文字框不变会呢?
      

  9.   

    Label改透明,没用,Image不能改透明,
    背景是窗体,白色的,要改吗?
      

  10.   

    没明白你最终的目的,你是不是想:当点击Image上的label,触发Image的click事件??
      

  11.   

    晕哦,本贴主题就写明了,让Label保持禁用状态!
    目的就是为了让其底下的Image获得鼠标事件!!!问题是禁用了Label,其文字就灰了(本来应该是彩色的)
    只要解决了显示颜色问题就可以。好吧,搞得头都晕了,偶放弃一切点击事件,
    也不管底下什么Image控件了,只问一个问题:【问】如何让Label控件在禁用状态下其文字不变灰? 别问我干什么用,就这一个技术问题而已,呵呵:)