none
백그라운드 색상 투명으로 하는법 RRS feed

  • 질문

  • protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);

                Rectangle Border = new Rectangle(new Point(0, 0), new Size(this.Width - 1, this.Height - 1));
                //pe.Graphics.FillRectangle(new SolidBrush(Color.LightGray), pe.ClipRectangle);
                pe.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.White), 7), Border);

                for (int i = 0; i < this.TabCount; i++)
                {
                    Rectangle rect = GetTabRect(i);
                    rect.X = rect.X + 1;
                    rect.Y = 3;

                    pe.Graphics.FillRectangle(new SolidBrush(Color.SkyBlue), rect);
                    pe.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.White), 1), rect);
                }

            }

    이렇게 해서 탭컨트롤 을 커스텀하고있는데요.탭까지모두 잘됩니다.  컨트롤에 뒷배경을 투명하게 만들고 싶지만 BackColor속성이 없어서 배경색을 지정하고 있지 못하고있습니다.

    화살표 표시된쪽인데 OnPaintBackGround() 이벤트를 사용하고 투명색으로 그려도 저색상은 여전히 배경에 남아있습니다.

    어떻게 해야 배경색을 투명하게 할수 있을까요.

    2015년 12월 22일 화요일 오전 2:26

답변

  • 안녕하세요.

    WPF라면, 아래와 같이 한번 해보세요. (*테스트 해봤습니다.)

    1. View 파일에서 TabControl에 스타일을 지정.

     <TabControl Style="{StaticResource XXXXXXX}"/>

    2. TabItem에 스타일을 지정.

     <TabItem Style="{StaticResource XXXXXXX}" />
    

    3. 스타일 정의

        <Style x:Key="XXXXXX" TargetType="TabItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}" >
                        <Border Name="Border" Background="Transparent">
                            <ContentPresenter x:Name="TabContentName" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header" RecognizesAccessKey="True"/>
                        </Border>
                </Setter.Value>
            </Setter>
        </Style>

    불필요한 속성을 지우시면 됩니다.

    3번에서 진하게 표시된 부분이 말씀하신부분 투명하게 만드는 부분입니다.

    도움되시길 바랍니다.


    프로그램 개발에는 정답이 없다.

    • 답변으로 제안됨 Sungman KOMVP 2016년 1월 12일 화요일 오전 4:36
    • 답변으로 표시됨 Boram YiModerator 2016년 1월 15일 금요일 오전 12:12
    2016년 1월 12일 화요일 오전 4:36