Текущий архив: 2003.02.06;
Скачать: CL | DM;
ВнизBitmapToRgn? Найти похожие ветки
← →
Шишкин Илья (2003-01-29 21:11) [0]На sources.ru нашёл код для задания региона окна по Bitmap"у:
var
MaskBmp: TBitmap;
begin
MaskBmp := TBitmap.Create;
try
MaskBmp.LoadFromFile("FormShape.bmp");
Height := MaskBmp.Height;
Width := MaskBmp.Width;
// ОС владеет регионом, после вызова SetWindowRgn
SetWindowRgn(Self.Handle, BitmapToRgn(MaskBmp), True);
finally
MaskBmp.Free;
end;
end;
Но или меня глючит, или функции BitmapToRgn не существует.
Может кто-нибудь пролить свет на этот вопрос?
← →
Mihey (2003-01-29 21:39) [1]Ну, такая функция глючить не должна:
procedure CropWindow( Handle: HWnd; Picture : TPicture );
var
hrgn, hrgn1 : integer;
hdc : integer;
x, y : integer;
Color : TColor;
begin
// Color := Picture.Bitmap.Canvas.Pixels[ 0, 0 ];
Color := clWhite;
hdc := GetDC( Handle );
hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width, Picture.Graphic.Height );
for x := 1 to Picture.Graphic.Width do
for y := 1 to Picture.Graphic.Height do
if Picture.Bitmap.Canvas.Pixels[ x - 1, y - 1 ] = Color then begin
hrgn1 := CreateRectRgn( x - 1, y - 1, x, y);
CombineRgn( hrgn, hrgn, hrgn1, RGN_DIFF );
DeleteObject( hrgn1 );
end;
SetWindowRgn( Handle, hrgn, true );
//DeleteObject( hrgn );
ReleaseDC( Handle, hdc);
end;
И наоборот:
procedure UncropWindow( Handle: HWnd; Picture : TPicture );
var
hrgn : integer;
hdc : integer;
begin
hdc := GetDC( Handle );
hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width , Picture.Graphic.Height );
SetWindowRgn( Handle, hrgn, true );
ReleaseDC( Handle, hdc );
end;
Страницы: 1 вся ветка
Текущий архив: 2003.02.06;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.015 c