我将Panel作为一个背景容器,并通过Canvas画上背景色(也可能是图片),容器里放上一个按钮(有透明区域)
问题就在这了,透明区域的底图是Color属性指定的色,而不是Canvas上的图问题演示:我想让按钮的透明区域是它下面的颜色或图片(图中的黄色),而不是Color指定的颜色(图中的绿色)
不要跟我说设置Color,实际情况中背景可能是张图片什么的,应该怎么处理?

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    可能是我描述的不清楚,我这样打个比方底层: Form.Color = 假设是红色
    中层:Panel.Color = 假设为黄色  (在OnPaint里画成蓝色)
    上层:也就是我的按钮,透明区域按理说应该是Panel在Paint里画的蓝色才对吧,而这里底色却是黄色的
        同理,如果把Panel删除掉,底色就变成窗体的红色了所以对于透明区域,好像并不能“认识”Paint画出的东西?