Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как накладывать скины на формы?

1.7K
01 декабря 2002 года
nike_vin
27 / / 01.12.2002
Как накладывать скины на формы?
Говорят, есть какая-то утилита в Cbuilder'e.
Спасибо.
317
02 декабря 2002 года
Relax
573 / / 20.09.2000
про утилиту ничего не знаю... на каком-то сайте видел компонент, который этим занимается... то есть ставишь его на форму и грузишь в него картинку, жмешь батон и компонент делает форму с очертаниями картинки... но это можно ручками сделать... посмотри хелп по апишым функциям SetWindowRgn и CreatePolygonRgn
1.7K
02 декабря 2002 года
nike_vin
27 / / 01.12.2002
Цитата:
Originally posted by Relax
про утилиту ничего не знаю... на каком-то сайте видел компонент, который этим занимается... то есть ставишь его на форму и грузишь в него картинку, жмешь батон и компонент делает форму с очертаниями картинки... но это можно ручками сделать... посмотри хелп по апишым функциям SetWindowRgn и CreatePolygonRgn



> так что же это за компонента таная?
кто знает?

421
02 декабря 2002 года
bercut
124 / / 20.06.2000
Цитата:
Originally posted by nike_vin


> так что же это за компонента таная?
кто знает?



Где-то у меня такой компонент валялся, но я им сам никогда не пользовался, надобности не было.
Если что, то могу выслать его тебе, только будет нужен твой E-Mail. ;-)

421
02 декабря 2002 года
bercut
124 / / 20.06.2000
-
429
04 декабря 2002 года
Slon
78 / / 20.01.2000
Цитата:
Originally posted by nike_vin
Как накладывать скины на формы?
Говорят, есть какая-то утилита в Cbuilder'e.
Спасибо.



Код из моего сплеш-скрина.
Кладешь на форму TImage. Загружаешь в него картинку. Белый цвет считается прозрачным.
Пробовал обойтись без TImage и передавать вместо Image1->Picture->Bitmap битмап, загруженный из ресурсов проги, но почему-то не вышло.

HRGN __fastcall TfrmSplash::CreateRgn(Graphics::TBitmap *Bmp, LPPOINT pPoint)
{
HBITMAP hBmp = Bmp->Handle;
if(!hBmp) return NULL;
BITMAP bi;
BYTE bpp;
DWORD e, f, t;

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];
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(int i = 0; i<bi.bmHeight; i++)
for(int 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;
}
//---------------------------------------------------------------------------

void __fastcall TfrmSplash::FormShow(TObject *Sender)
{
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
SetWindowRgn(Handle, CreateRgn(Image1->Picture->Bitmap, NULL), true);
}
//---------------------------------------------------------------------------

1.7K
05 декабря 2002 года
nike_vin
27 / / 01.12.2002
Цитата:
Originally posted by bercut


Где-то у меня такой компонент валялся, но я им сам никогда не пользовался, надобности не было.
Если что, то могу выслать его тебе, только будет нужен твой E-Mail. ;-)



> bercut - вот тебе мыло : [email]nikev@ukr.net[/email]
Буду ждать,
Пака.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог