안녕하세요 유쾌한 냐옹입니다.
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
'프로그래밍' 카테고리의 다른 글
웹배포 프로젝트로 배포시 오류 발생.. (0) | 2012.04.02 |
---|---|
ActiveX 배포 문제 포스트 ㅠㅠ (1) | 2012.03.27 |
[C#] TabControl 여러가지 Style UserControl 대박.. (6) | 2012.02.27 |
[C#] Shaodw Label UserControl ^^;; (0) | 2012.02.27 |
[C#] C#용 사용자 컨트롤 프리 소스. 갖다 쓰면 댄다. (0) | 2012.02.13 |
댓글