Создание региона по картинке
Реализовать это достаточно просто: создадим прямоугольный регион, размерами равный картинке, а потом потом "вычтем" из него все точки с заданным цветом прозрачности. Ниже приведён исходный код:
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'е, сохранил на диск, и использовал вышеприведённую процедуру. Получилось примерно следующее:
Вверху видны синие остатки безвозвратно загубленного Caption'а формы
Вот на этом, пожалуй, можно закончить этот обзор, отнюдь не претендующий на исчерпываемость. Хочется надеятся, что кого-то сей опус подвигнет на создание чего-нить хорошего, или просто сэкономит несколько часов ползанья по Win32 SDK... Удачи.
Автор: x77
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!