+ -
当前位置:首页 → 问答吧 → 关于透明图的背景色问题!

关于透明图的背景色问题!

时间:2011-11-11

来源:互联网

我将Panel作为一个背景容器,并通过Canvas画上背景色(也可能是图片),容器里放上一个按钮(有透明区域)
问题就在这了,透明区域的底图是Color属性指定的色,而不是Canvas上的图

问题演示:



我想让按钮的透明区域是它下面的颜色或图片(图中的黄色),而不是Color指定的颜色(图中的绿色)
不要跟我说设置Color,实际情况中背景可能是张图片什么的,应该怎么处理?

作者: aqtata   发布时间: 2011-11-11

标准按钮没办法吧,如果自定义的可以自己改代码来实现。

作者: lhylhy   发布时间: 2011-11-11

引用 1 楼 lhylhy 的回复:

标准按钮没办法吧,如果自定义的可以自己改代码来实现。

忘记说,按钮是自己写的,从TGraphicControl继承的

作者: aqtata   发布时间: 2011-11-11

那就复制父控件的Canvas对应部分到Canvas,然后只画不透明部分。

作者: lhylhy   发布时间: 2011-11-11

引用 3 楼 lhylhy 的回复:

那就复制父控件的Canvas对应部分到Canvas,然后只画不透明部分。

我感觉问题是,对于按钮来说,它的下面就是Color了,不是Canvas

作者: aqtata   发布时间: 2011-11-11

引用 4 楼 aqtata 的回复:
引用 3 楼 lhylhy 的回复:

那就复制父控件的Canvas对应部分到Canvas,然后只画不透明部分。

我感觉问题是,对于按钮来说,它的下面就是Color了,不是Canvas

你自己的控件,你想要Canvas就有Canvas。

作者: lhylhy   发布时间: 2011-11-11

引用 5 楼 lhylhy 的回复:

引用 4 楼 aqtata 的回复:
引用 3 楼 lhylhy 的回复:

那就复制父控件的Canvas对应部分到Canvas,然后只画不透明部分。

我感觉问题是,对于按钮来说,它的下面就是Color了,不是Canvas

你自己的控件,你想要Canvas就有Canvas。

可能是我描述的不清楚,我这样打个比方

底层: Form.Color = 假设是红色
中层:Panel.Color = 假设为黄色 (在OnPaint里画成蓝色)
上层:也就是我的按钮,透明区域按理说应该是Panel在Paint里画的蓝色才对吧,而这里底色却是黄色的
  同理,如果把Panel删除掉,底色就变成窗体的红色了

所以对于透明区域,好像并不能“认识”Paint画出的东西?

作者: aqtata   发布时间: 2011-11-11