一个透明,鼠标穿透 等问题的一个窗口问题。

ahui_net 2012-02-09 10:15:16
有一个特殊需求,一个窗口显示文字,背景透明,但是可以点击产生事件。
现在几种方式都不能完全解决,特请教。

1、背景透明,文字能显示,但是不能点击,鼠标穿透窗口。
2、背景半透明,能点击,但文字也透明了。
3、加一个窗口在上面,因为涉及的改动很多,操作起来很麻烦。
4、上面加一个浮动的半透明控件,但是一直实行不好。

有什么好放方面吗?请教。
...全文
425 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gonplay 2012-02-11
  • 打赏
  • 举报
回复
有例子么?能不能给个链接神马的?
ahui_net 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 crystal_lz 的回复:]

引用 6 楼 ahui_net 的回复:
引用 5 楼 yangyangaiyuyu 的回复:

1、先把窗体的颜色变成一种很不常见的颜色。
2、把该窗体的TransparecyKey的颜色设置成窗体的颜色。
3、加入控件,但是控件的颜色不能和窗体颜色一致,否则控件也透明。
运行程序后,就只能看见标题栏和控件了。

经测试,可以

透明地方穿透了。不能点击


在我的印……
[/Quote]

这个我也有发现,应该不是vs的刻意设置,而应该是他的一个bug。而这种效果只有在windows7(不确定是否只是64位)有效,当程序运行在xp上就失效了,谢谢你的仔细。
crystal_lz 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ahui_net 的回复:]
引用 5 楼 yangyangaiyuyu 的回复:

1、先把窗体的颜色变成一种很不常见的颜色。
2、把该窗体的TransparecyKey的颜色设置成窗体的颜色。
3、加入控件,但是控件的颜色不能和窗体颜色一致,否则控件也透明。
运行程序后,就只能看见标题栏和控件了。

经测试,可以

透明地方穿透了。不能点击
[/Quote]

在我的印象中 貌似 话说 大概 记得 有些特定的颜色设置成透明色会穿透 有些不会、、比如Red,blue不会穿透、、而Green却可以穿透、、、
//穿透
this.BackColor = Color.Green;
TransparencyKey = Color.Green;
//不会穿透
this.BackColor = Color.Red;
TransparencyKey = Color.Red;
好吧 反正在我的电脑上是这样的、、、


private void Form2_Load(object sender, EventArgs e) {
//pictureBox1.Dock = DockStyle.Top;
//pictureBox1.Height = 20;
//pictureBox1.BackColor = Color.Green;
//this.BackColor = Color.DarkBlue;

Label lb = new Label();
lb.Text = "TEST";
lb.Location = new Point(0, 0);
this.Controls.Add(lb);
lb.BringToFront();
this.BackColor = Color.Red;
TransparencyKey = Color.Red;
}

刚才试验了、、、窗体出来只有label上面的文字 但是鼠标没有穿过窗体 而用 Green会穿过
ahui_net 2012-02-09
  • 打赏
  • 举报
回复

[Quote=引用 5 楼 yangyangaiyuyu 的回复:]

1、先把窗体的颜色变成一种很不常见的颜色。
2、把该窗体的TransparecyKey的颜色设置成窗体的颜色。
3、加入控件,但是控件的颜色不能和窗体颜色一致,否则控件也透明。
运行程序后,就只能看见标题栏和控件了。

经测试,可以
[/Quote]
透明地方穿透了。不能点击
??????8 2012-02-09
  • 打赏
  • 举报
回复
1、先把窗体的颜色变成一种很不常见的颜色。
2、把该窗体的TransparecyKey的颜色设置成窗体的颜色。
3、加入控件,但是控件的颜色不能和窗体颜色一致,否则控件也透明。
运行程序后,就只能看见标题栏和控件了。

经测试,可以
ahui_net 2012-02-09
  • 打赏
  • 举报
回复
不是wpf
熙风 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 assky124 的回复:]
WPF啊
[/Quote]

LZ似乎用的不是wpf呢
熙风 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 assky124 的回复:]
WPF啊
[/Quote]

LZ似乎用的不是wpf呢
assky124 2012-02-09
  • 打赏
  • 举报
回复
WPF啊
dylike 2012-02-09
  • 打赏
  • 举报
回复
层窗体支持鼠标调整大小及在原层窗体上显示控件
http://topic.csdn.net/u/20120119/17/fd6d77f1-b4b0-41c0-abc2-ab5f1f8ac18c.html
mwsz_666 2012-02-09
  • 打赏
  • 举报
回复
没太看明白什么意思,我个人理解的意思就是如果点击透明窗体的问题.如果我理解的对的话,那估计就很费劲了,窗体透明了是会过过滤事件的,估计你要用到钩子程序了.
如果用一个变通的方法,我觉得你可以设置一个图片,图片的大小和窗体的大小一样,然后把图片的背景设成透明,这样就可以接受鼠标点击事件了.也许你会问你的文字怎么办.我想到的办法是你在那个透明的图片前面在放一个图片,然后把你的文字生成bmp类,作为最前面图片的背景,这样也可以显示文字.

希望我正确理解了你的意思,并对你有所帮助.
hyblusea 2012-02-09
  • 打赏
  • 举报
回复
使用
Graphics.FillRectangle 填颜色为 1,255,255,255
Michael_g 2012-02-09
  • 打赏
  • 举报
回复
完全透明相当于剪裁了窗体,被剪裁部当然不能响应事件,这是不可能的事。你必需将窗体设置一个透明度才行,明透度可以低些,这样就行了。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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