Прорисовка TForm по заданному объекту HRGN
Подскажите мне, пожалуйста, как решается следующая задача:
У меня есть форма (наследник от TForm), есть функция вычисляющая объект типа HRGN. Как мне заставить Builder отрисовать объект типа TForm по полученному региону HRGN? Цель,- нарисовать фигурное окно по заданному изображению путем делания прозрачным всех пикселей заданного цвета в изображении.
Функция взята из инета (статья "Окна нестандартной формы", автор Т. Сорока), и нижеследует (если кому нужно):
HRGN TfMainForm::BitmapToRegion(TPicture *APicture, TColor ATransparentColor)
{
HRGN Result = 0;
for(int y = 0; y < APicture->Height; y++)
{
int x = 0, start = 0, end = 0;
while((x < APicture->Width) && (APicture->Bitmap->Canvas->Pixels[x][y] == ATransparentColor))
x++;
start = x ;
while((x < APicture->Width) && (APicture->Bitmap->Canvas->Pixels[x][y] != ATransparentColor))
x++;
end = x ;
if(!Result)
Result = CreateRectRgn(start, y, end, y + 1);
else
{
HRGN TempRgn = CreateRectRgn(start, y, end, y + 1);
CombineRgn(Result, Result, TempRgn, RGN_OR);
DeleteObject(TempRgn);
}
}
return Result;
}
В статье не сказано, что с данной функцией делать в проекте под C++Builder. Подскажите мне пожалуйста что мне нужно сделать в моем проекте на C++Builder, чтоб отрисовать столь желанную фигурную форму? Т.е. что мне делать с этой функцией BitmapToRegion(), и куда ее вписывать?
Best Wishes,
Artiom Ivanov, L CEO
CubeReality Inc,
http://www.cubereality.com
есть в Windows API функция SetWindowRgn(Handle, hRgn, true); - она тебе поможет :)