Форум: "Основная";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
ВнизФорма форм :) Найти похожие ветки
← →
Val (2002-02-05 12:23) [0]Многие приложения, предназначенные для решения задач в узкой,специфической области, используют довольно интересный интерфейс, основанный на изображении главной формы в виде обьекта деятельности(магнитофон, радио, видео, паровой котел :) и т.д.). Хотелось бы узнать мнение людей, работавших в данном направлении, какими способами реализуется неправильная форма главной Form, какие предпочтительней. Поскольку, я, пока что, вижу один выход - в использовании регионов и их комбинирования, но, зачастую, нужна очень сложная форма Form :( быть может кто-то подскажет полезные ссылки...Заранее благодарен.
← →
Val (2002-02-05 16:26) [1]Нашел тут, кое-что, вернее функцию получения региона из .bmp-файла, но сам все перевести не могу, поскольку в синтаксисе VC++ не силен :(( Быть может кто-нибудь переведет?
HRGN CreateRgn(LPTSTR szFileName, LPPOINT pPoint)
{
HBITMAP hBmp = (HBITMAP)LoadImage( NULL, szFileName,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
if ( !hBmp ) return NULL;
BITMAP bi;
BYTE bpp;
DWORD e;
DWORD f, t;
INT i, j;
bool b = false;
HRGN Rgn, ResRgn = CreateRectRgn( 0, 0, 0, 0 );
GetObject( hBmp, sizeof( BITMAP ), &bi );
bpp = bi.bmBitsPixel >> 3;
BYTE *pBits = new BYTE[ bi.bmWidth * bi.bmHeight * bpp ];
int p = GetBitmapBits( hBmp, bi.bmWidth * bi.bmHeight * bpp,
pBits );
if ( pPoint == NULL || pPoint->x >= bi.bmWidth ||
pPoint->y >= bi.bmHeight )
e = *(DWORD*)pBits;
else
e = *(DWORD*)(pBits + (pPoint->y * bi.bmWidth + pPoint->x) * bpp );
e <<= 32 - bi.bmBitsPixel;
for ( i = 0; i < bi.bmHeight; i++ )
for ( j = 0; j < bi.bmWidth; j++ )
{
t = *(DWORD*)(pBits + (i * bi.bmWidth +
j) * bpp) << (32 - bi.bmBitsPixel);
if ( t == e )
{
if ( !b )
{
f = j;
b = true;
} else if ( j == (bi.bmWidth - 1) )
{
Rgn = CreateRectRgn( f, i, j, i + 1 );
CombineRgn( ResRgn, ResRgn, Rgn, RGN_OR );
b = false;
}
} else if ( b )
{
Rgn = CreateRectRgn( f, i, j, i + 1 );
CombineRgn( ResRgn, ResRgn, Rgn, RGN_OR );
b = false;
}
}
delete pBits;
return ResRgn;
}
← →
BlankAlex (2002-02-05 16:34) [2]На www.woll2woll.com есть библиотека 1st Class. Они реализовали построение любой формы на основе BMP. На хакеских серверах есть кряки для библиотеки
← →
Val (2002-02-05 16:45) [3]URL http://www.programme.ru/download/exotica.zip
программка под Excel для создания регионов
← →
Nikolay (2002-02-05 17:27) [4]2 Val
Вот достаточно не сложный код он обрисовывает любую форму!
Var
X1,X,Y: Integer;
begin
X1 := -1;
R := CreateRectRgn(0,0,0,0);
ImageFormMain.Picture.LoadFromFile("11.bmp");
FormMain.BorderStyle := bsNone;
FormMain.Height := ImageFormMain.Picture.Bitmap.Height;
FormMain.Width := ImageFormMain.Picture.Bitmap.Width;
With ImageFormMain.Picture.Bitmap Do
For Y := 0 To Height-1 Do
For X := 0 To Width-1 Do
If Canvas.Pixels[X,Y] <> Canvas.Pixels[0,0] Then
Begin If X1=-1 Then X1 := X; End
Else
If X1>-1 Then
Begin
CombineRgn(R,R,CreateRectRgn(X1,Y,X-1,Y+1),RGN_OR);
X1 := -1;
End;
SetWindowRgn(Handle, R, True);
// SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_LAYERED);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c