Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Прорисовка TForm по заданному объекту HRGN


Автор: lexluther 11.3.2005, 08:45
Всем привет,

Подскажите мне, пожалуйста, как решается следующая задача:

У меня есть форма (наследник от 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

Автор: JAnty 11.3.2005, 12:13
Какая у тубя ОС? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)