Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > как делают скринмейты?


Автор: Mpak 13.1.2009, 10:12
всякие там кошки, собаки, черт знает кто, елочки и т.п.
Мне интересн момент, как делают так что они имеют произвольную форму, при этом самой формы (типа TForm smile) нет? О_о
я много чего перепробовал - не получается...
посоветуйте пожалуйста чего нить почитать, полистать, покликать.. хочу ченить свое подбное красиво-бесполезное сделать smile

Автор: mrbrooks 13.1.2009, 10:43
типа этого?

Автор: Mpak 13.1.2009, 10:49
Да-да-да! Оно самое! smile

Автор: mrbrooks 13.1.2009, 11:00
Цитата(Mpak @  13.1.2009,  10:49 Найти цитируемый пост)
Да-да-да! Оно самое!

ок. здесь нет ничего сложного. 
Собственно нужно:
Form  MainForm;
Image MainImage;
Timer MTimer;

Самая соль - это подготовить рисунок. Берем рисунок - вырезаем его по контуру и кидаем на новый с каким нибудь фоном. К примеру желтым.
Загружаем его в Image. 
Далее
Код

//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
TransparentColor = true;
TransparentColorValue = clYellow;
BorderStyle = bsNone;
MainImage->Stretch = true;
MTimer->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MTimerTimer(TObject *Sender)
{

Top = Top + 100;
if (Top > Screen->Height) Top = 100;
}
//---------------------------------------------------------------------------


Добавлено через 6 минут и 48 секунд
что бы таскать мышкой форму добавь
Код

void __fastcall TMainForm::MainImageMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
{
long move = 0xf012;
if (Button == mbLeft)
        {
              ReleaseCapture();
              SendMessageA(Handle, WM_SYSCOMMAND, move, 0);
        }
}

Автор: Mpak 13.1.2009, 11:26
А картинка какого формата должна(может) быть?

Автор: mrbrooks 13.1.2009, 11:27
Mpak, bmp

Автор: ImmS 13.1.2009, 12:36
Ммм...попробовал код, все работает, вот только у меня у видеокарты есть такая опция: при перетаскивании окна оно становится прозрачным, а потом возвращается назад....так вот тогда фоновая картинка становится видна...как отследить когда форма прорисовывается заново? Или может еще как-то можно сделать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)