![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Регион формы по маске [D7, Win95/98, WinME, NT4, Win2k, WinXP]
Elysium © (2004-05-20 09:53:00)Программисты HI. Вот вопросик нарисовался - как сделать регион формы по маске из файла с изображением - BMP? И как эту форму таскать за клиентскую область (что-то свзяано с WM_CAPTION.... - но не помню точно, что именно)?
Ajax (2004-05-22 16:55:00) [1]>Elysium
>ну может быть маленькая вставочка на ASM-е
Не, ну я удивляюсь...
А чем тебя не устраивало
>[1] inic © (20.05.04 15:18)
>Есть такой пример, но на ASMе
???
Elysium (2004-05-22 00:15:00) [2]Да и еще, что нибудь подобное побыстрее есть (ну может быть маленькая вставочка на ASM-е или, что-нибудь еще - но не KOL)?
Elysium (2004-05-22 00:05:00) [3]Всем большое Thanks!!!
Ajax (2004-05-21 16:50:00) [4]Ну, что-то наподобие...
function CreateRgnFromBitmap(rgnBitmap: Kol.PBitmap): HRGN;
var
transColor: TColor;
i, j: Integer;
width, height: Integer;
left, right: Integer;
rectRgn: HRGN;
begin
Result := 0;
width := rgnBitmap.Width;
height := rgnBitmap.Height;
transColor := $FF00FF;
for i := 0 to height - 1 do
begin
left := -1;
for j := 0 to width - 1 do
begin
if left < 0 then
begin
if rgnBitmap.Pixels[j, i] <> transColor then
left := j;
end
else
if rgnBitmap.Pixels[j, i] = transColor then
begin
right := j;
rectRgn := CreateRectRgn(left, i, right, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
left := -1;
end;
end;
if left >= 0 then
begin
rectRgn := CreateRectRgn(left, i, width, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
end;
end;
end;
Только я сей код использую вместе с KOL так что наверное тебе придется немного поправить обращение к Bitmap.
wicked (2004-05-21 12:11:00) [5]
> Но нужно ручками, ручками
BitmapToRegion - процедура... никто не мешает её перекроить как хочешь (что я и делал... ;))
Elysium (2004-05-21 11:10:00) [6]Всем спасибо, за ответы :-((. Но нужно ручками, ручками, а не с помощью библиотек или компонент.
Игорь Шевченко (2004-05-20 15:31:00) [7]
> как сделать регион формы по маске из файла с изображением
> - BMP?
Искать на Королевстве Delphi библиотеку Антона Григорьева FormRgn
wicked (2004-05-20 15:27:00) [8]поищи в интернете BitmapToRegion - сам я так и нашел....
насчет таскания - перехватить сообщение WM_NCHITTEST и в нужный момент возвращать из него HT_CAPTION...
inic (2004-05-20 15:18:00) [9]Есть такой пример, но на ASMе.
Но ты все равно посмотри, ибо WinAPI и Африке WinAPI.
http://spiff.tripnet.se/~iczelion/files/Skin%20a%20Window.zip