본문 바로가기
프로그래밍

[C#] textbox 배경에 이미지 입히기

by 건우아빠유리남편 2012. 2. 28.
반응형
하도 검색해도 이런 간단한 (내 생각엔..) 다른 사람들은 현업에서 썼을 만한 내용들이 안나오길래 글을 올려보았따.

안녕하세요 유쾌한 냐옹입니다.

 textbox를 꾸미느라 뒷배경에 이미지를 삽입해 달라는 요청이 왔습니다.

구글링 및 검색을 해봤는데..

textbox 컨트롤의 클래스의 그리기함수를 override 해서 정의해보라는 말이 나왔습니다.

이벤트함수는

1. OnPaintBackground

2. OnPaint

 각각의 함수 내부에서 그리기 작업을 다시금 해줬는데 막상 해당 textbox컨트롤이 포커싱받으면 그린 영역들이 모두 무효화되어 보이지 않습니다.

 아래는 해당 테스트 소스입니다. 2개의 함수로 각각 주석 처리 하면서 테스트 해보았지만 정상 동작하지 않습니다.

     public partial class TextboxBkImg : TextBox
    {
        TextureBrush m_Brush;
        public TextboxBkImg()
        {
            InitializeComponent();
            m_Brush = new TextureBrush(global::TextBackImg.Properties.Resources.TextboxBkImg);
            this.SetStyle(ControlStyles.UserPaint, true);
            this.Width += 2;
            this.Height += 2;
        }

        ~TextboxBkImg()
        {
            m_Brush.Dispose();
        }

        protected override void OnPaintBackground(PaintEventArgs pevent)
        {
            base.OnPaintBackground(pevent);

            pevent.Graphics.DrawImage(global::TextBackImg.Properties.Resources.TextboxBkImg, this.DisplayRectangle);
          
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            e.Graphics.DrawImage(global::TextBackImg.Properties.Resources.TextboxBkImg, this.DisplayRectangle);          
        }
 
    }

 

위에가 이미지를 입힌 제가 정의한 텍스트박스

아래가 일반 텍스트 박스입니다.

 

또 한가지 방법은  WPF를 이용하여 UserControl을 정의한 후 ElementHost를 이용하여 사용하는 것도 검색되었습니다.

제 생각엔 현업에 종사하시는 분들은 대부분 이런 비슷한 의뢰를 받아 본적이 있을 것이라고 생각합니다.

 어떤 방법을 쓰시는지 또는 위에 소스가 어떻게 잘못되었는지 여쭙니다.

 좋은 하루 되세요



그것에 대한 문제 해결 링크:
http://www.lemonwidz.com/tc/entry/C-텍스트박스에-워터-마크-추가배경?category=2
반응형

댓글