【问】如何让Label控件在禁用状态下其文字不变灰?

VBAHZ 2007-08-20 04:06:58
大量的很多地方需要动态交替显示文字和图片,
Label是最方便的(因为背景是Image控件——注意,不是PictureBox!不能用Print语句的),
但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
若将Label设为禁用的话,文字就变灰,很难看。

请问,如何让Label控件在禁用状态下其文字不变灰?
...全文
995 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBAHZ 2007-08-22
  • 打赏
  • 举报
回复
晕哦,本贴主题就写明了,让Label保持禁用状态!
目的就是为了让其底下的Image获得鼠标事件!!!

问题是禁用了Label,其文字就灰了(本来应该是彩色的)
只要解决了显示颜色问题就可以。

好吧,搞得头都晕了,偶放弃一切点击事件,
也不管底下什么Image控件了,只问一个问题:

【问】如何让Label控件在禁用状态下其文字不变灰?

别问我干什么用,就这一个技术问题而已,呵呵:)
zzyong00 2007-08-21
  • 打赏
  • 举报
回复
没明白你最终的目的,你是不是想:当点击Image上的label,触发Image的click事件??
VBAHZ 2007-08-21
  • 打赏
  • 举报
回复
Label改透明,没用,Image不能改透明,
背景是窗体,白色的,要改吗?
q卡卡p 2007-08-21
  • 打赏
  • 举报
回复
改变背景样式应该可以解决这个问题
VBAHZ 2007-08-21
  • 打赏
  • 举报
回复
举个例子吧,在一个窗体内随机漂浮着一个透明的显示着当前系统时间的彩色文字框,
还有若干随机飘的Image框(全处于文字下层,但各图片互有层叠,并且有时会自动放大或缩小)。
现在只有当图片框正好飘到文字框下时,点击该Image框才有效,
弹出对话框,恭喜你点中了NN图,
可能的情况——有多张图片都在文字框下面(互相交叠),
只以用户鼠标正好点到的那张为准

如何让那个文字框不变会呢?
熊孩子开学喽 2007-08-20
  • 打赏
  • 举报
回复
...如果每一点改变都要VB写代码重绘。。。估计VB会被偶折磨死,呵呵...

--------------------------
呵呵,其实真要用你的方法,用控件来做,才真的会把VB折腾死.
N年前<黑客帝国2>全球同步上映的时候,我给上海地区广告商做的那个宣传广告小游戏就是直接用VB贴图的,并且图像来源是摄像头叠加透明贴图再叠加文本,每秒二十多祯的速度,一点都不慢.
不要看不起GDI贴图,速度还是很快的,不信你试试这个:
http://blog.yesky.com/89/wallescai/1680589.shtml
VBAHZ 2007-08-20
  • 打赏
  • 举报
回复
失误失误,容器套容器是不可能,谢谢大虾指出,呵呵:)

之所以没有使用PictureBox是因为。。。。有N多张图要同时显示,
而且要充分利用到Image.Stretch的功能。

另外,用的不是IMAGE.VISIBLE,而是Move,的方法,
就是说Label的文字位置基本不变,但其中的文字内容却会变,
其底下的多个不同的Image框,经常要移动,放大缩小之类的,
如果每一点改变都要VB写代码重绘。。。估计VB会被偶折磨死,呵呵:)

其实,最早的目的只是想找一个不让Label变灰的办法,
用Label,就是看中它的便捷性,觉得在这里只有它是最适合的(代码省、系统开销小、又方便。。。)
当然啦,如果VB实在没有办法的话,最终的取舍。。。那就还是让它继续灰吧,可怜的小灰:(
对这个大量动态图形变化自己底层绘图?偶觉得太。。。

PS:简直是决配——绝配?^-^
熊孩子开学喽 2007-08-20
  • 打赏
  • 举报
回复
某个时间里是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的位置)
简直是决配
VBAHZ 2007-08-20
  • 打赏
  • 举报
回复
所见略同,本来俺也想这样滴,
但问题是,Label所在的位置,其背后显示的控件是动态的,
就是说在某个时间里是imgABC(N),在另一个时间里可能是imgBBB(MM),
另外,对点击时的XY位置也有所要求(所以实际用的是MouseDown事件)
背后的控件,若是容器套容器套容器。。。
这样的话,用Label克隆。。。这个。。。基本上。。。很难,呵呵:)
熊孩子开学喽 2007-08-20
  • 打赏
  • 举报
回复
楼主是否对IMAGE控件的CLICK或者MOSEMOVE之类的事件有编程?
如果是这样的话,可以在LABLE的CLICK事件中去调用IMAGE的鼠标事件:
例子:
SUB LABEL1_CLICK()
IMAGE1_CLICK
END SUB
VBAHZ 2007-08-20
  • 打赏
  • 举报
回复
没用啊,依然是Label获得点击事件,而其背后的控件无法获得焦点:(

(因文字比较大,所以用户基本上直接往文字上点,呵呵)

即使设置Label成透明样式,但实际上,它占的那块矩形区域还是它的地盘,
流氓啊,郁闷。。。

另外,Label背后的控件也会动态改变的
daisy8675 2007-08-20
  • 打赏
  • 举报
回复
但不想让文字获得点击事件,因为看上去文字和背景应该是一体的。
//把label别写click的代码 Label的autosize=true borderstyle=0

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧