흐르는 시간의 블로그...

나도 저 문제에 봉착 했다.

델파이가 아니고 C++ Builder 지만...

어쨋든 두 툴이 거의 동일하다시피 하기 때문에...

지금의 문제는 TGraphicControl인 경우 배경을 투명하게 하는 것이 브러쉬만 바꿔주면 된다.

Canvas->Brush->Style = bsClear;

그러나 이 경우 Alpla를 적용할 방법이 없다.

투명도 조절이 불가능하다.

투명도를 조절하는 방법으로는 windows 2000이후에 나오는

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0, (255 * 70) / 100, LWA_ALPHA);

위의 두코드를 사용하면 되나 저 경우 윈도우 핸들이 있어야 한다.

따라서 윈도우 핸들이 있는 TCustomControl을 상속 받아 사용하는 방법이 있다.

이 경우 배경을 투명하게 하기 위한 처리를 해야 한다.

void __fastcall TDSMText::CreateParams(TCreateParams &Params)
{
TCustomControl::CreateParams(Params);
Params.ExStyle = Params.ExStyle | WS_EX_TRANSPARENT;
}

위와 같은 방법으로 윈도우 전체를 투명하게 한다.

void __fastcall TRectTracker::WMEraseBkgnd(Messages::TWMMouse &Message)
{
Message.Result = false;
}

위의 코드도 추가한다.

그러나, Tracker에서 배경이 희게 그려지는 현상이 발생하면서 다시 원점으로 갔다.

둘 중 하나를 선택한다면 TGraphicControl을 쓰고 싶다.

윈도우를 받아서 쓰는 부분은 정말 많은 문제가 발생하기 때문이다.

...