Vista로인해 말도 많은 ActiveX 컨트롤을 회사에서 하나 만들고 있고 있는데, 클라이언트 언어로 Visual Basic을 사용하다가, 이번에 C#으로 클라이언트 언어를 바꾸어 보다가 잠시 두손을 들게 되었다.
두손을 든 이유는 바로 Color이다. C++ ATL로 만든 ActiveX에서 사용하는 색상 Type은 Visual Baisc에서 OLE_COLOR이다. 이는 C++의 COLORREF Type에서 변환되어진 것일테고… 그런데 문제는 C#에서는 이렇게 넘어온 색상의 타입을 uint로 받는다.. 쿠궁~ ㅡOㅡ;;
뭐.. 색상 따위가.. 내 앞길을 막네? 건방진 것.. 하면서 간단히 형변환하면 되겠거니 하고.. C++와 Visual Basic의 RGB에 해당하는 C#의 함수를 만들었으니.. 다음과 같다.
uint RGB(int R, int G, int B) {
return (uint)(Color.FromArgb(R, G, B).ToArgb());
}
ㅋㅋ.. 뭐 변환 과정이 한Q가 아닌 세Q인지라(FromArgb->ToArgb->uint) 뭔가 묘상하긴 했지만, 분명 작동할터라 기대하고 실행해 보니…… 그 색감이 아래와 같다.
안습.. ㅜ_ㅜ
원래 의도한 화면은 아래와 같은데 말이다… Visual Basic으로 맹근거..
막눈, 막귀인 내가 봐도 단지 색상만 다를 뿐, 그 뒷태, 앞태는 모두 같은데… 이처럼 큰 차이를 느끼게 한다는 것을 깨달았다…. UI에서 색상 고르기를 신부감 고르기보다 더 신중하게 하여야겠다… (피곤하니 글빨이 장난아닌데.. ㅡOㅡ;;)
아시는분…… RGB 요소의 값으로 ActiveX가 원하는 색상값을 C#에 옳바르게 넣어주는 방법은….?
uint RGB(int R, int G, int B) {
return (uint)(Color.FromArgb(0, R, G, B).ToArgb());
}