Содержание материала

Создание региона по картинке

 

Реализовать это достаточно просто: создадим прямоугольный регион, размерами равный картинке, а потом потом "вычтем" из него все точки с заданным цветом прозрачности. Ниже приведён исходный код:

Code:

function RgnByMask (bmp: TBitmap; Color: TColor): hRgn;

var

i, j: integer; 

tmp: hRgn;

begin

Result := CreateRectRgn (0, 0, bmp.Width - 1, bmp.Height - 1);

for j := 0 to bmp.Height - 2 do begin

  for i := 0 to bmp.Width - 2 do begin

    if bmp.Canvas.Pixels [i, j] = Color then begin

      tmp := CreateRectRgn (i, j, i + 1, j + 1);

      try

        CombineRgn (Result, Result, tmp, RGN_DIFF);

      finally          DeleteObject (tmp);

      end;

    end;

  end;

end;

end;

 

 

Для примера я написал несколько слов в Paint'е, сохранил на диск, и использовал вышеприведённую процедуру. Получилось примерно следующее:

clip0087

 

Вверху видны синие остатки безвозвратно загубленного Caption'а формы

 

Вот на этом, пожалуй, можно закончить этот обзор, отнюдь не претендующий на исчерпываемость. Хочется надеятся, что кого-то сей опус подвигнет на создание чего-нить хорошего, или просто сэкономит несколько часов ползанья по Win32 SDK... Удачи.

 

Автор: x77

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить