C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52617] Re:버튼 컴포너트 배경에 대해
우랏차차~!! [st8123] 1420 읽음    2008-03-08 16:27
반가운 부산분이시네요 ^^
눈이 부시게 발전하는 그래픽 시대에
프로그램을 하다보면 안되는게 어디있겠냐는 생각을 하게 되더군요.

TButton을 상속받은 버튼들은 윈도우 표준 클래스를 사용하고 있습니다.
그래서 SetWindowLong()이란 함수로 BS_OWNERDRAW 속성을 설정해서 그림을 삽입하는 것이 가능합니다.

게임을 보게 되면 무척이나 다양하고도 어여쁜 버튼들을 볼 수가 있는데요.
일단 이쁜 버튼을 만들고자 하시면 포토샵 작업을 해주셔야 됩니다.
프로그램을 만들다 보면 느끼는 점이 "자동은 없다 ㅡ,.ㅡ  " 거든요. ㅋ

1. 둥근 버튼
일단 모든 이미지는 사각형 형태를 지닙니다.
그렇기 때문에 둥근 이미지는 불가 하지만 약간의 편법으로 이미지의 특정 색상을 배경화면과 동일 하게 함으로
마치 둥근 모양의 버튼 인듯한 착각을 만들어 낼수 있습니다. (리전 사용은 제껴두고요 ^^;;)
그래서 둥근 모양의 버튼들은 둥근 모양을 벗어난 살짝 위나 아래를 클릭해도 클릭이 되는 것이지요.

2. 만드는 방법
일단은 포토샵 작업을 통해 어여쁜 버튼 이미지를 만들어냅니다. (제일 많은 시간을 소모, 프로그램 보다더)
그 후에는 WM_DRAWITEM이라는 메시지를 통해서 바꿀 수가 있는데 코딩을 하는것은
버튼을 하나 생성할 때 마다 추가하여야 하므로 힘이 들어, 콤퍼넌트로 제작을 하심이 수월할 듯 싶습니다.

WM_DRAWITEM에 대해서는 갖가지 API 책이나 사이트를 통해 조금 연구를 하여야 할 듯 싶어요.

예제를 하나 올려드리겠습니다.
칙칙한 UI를 탈피하기 위해 모두 힘냅시다~!!


부산촌님 님이 쓰신 글 :
: 안녕하십니까?
:
: 프로그램을 하다보니 각종 버튼들이 너무 밋밋하여
: 버튼 표면에 빽그라운드 그래픽을 넣어 보려고 아무리 해봐도 방법이 없더군요!!!!
:
: 또한 버튼을 둥글게 만들수는 없는건가요?...
:
: 읽어 주셔서 갑사합니다.....

+ -

관련 글 리스트
52610 버튼 컴포너트 배경에 대해 부산촌님 1169 2008/03/07
52617     Re:버튼 컴포너트 배경에 대해 우랏차차~!! 1420 2008/03/08
52615     Re:버튼 컴포너트 배경에 대해 김상구.패패루 1250 2008/03/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.