Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.004 c
14-66674
Volk
2002-01-04 12:32
2002.02.21
Помогите!!!


1-66602
dimich
2002-02-06 12:52
2002.02.21
Аттрибут!!!


1-66537
Василий Свиридов
2002-02-03 00:08
2002.02.21
Не знаю как сделать type xxx=record


1-66616
irq
2002-02-06 15:31
2002.02.21
Каледарь


3-66456
JEff
2002-01-25 18:50
2002.02.21
РЕБЯТА!!!! Выручите новичка!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский