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


Автор: Kirgston 20.2.2009, 10:29
Всем доброго времени суток! Столкнулся я щас с проблемкой... моя программа должна работать поверх игры. А игра на сколько я понимаю прорисовывает экран. Ну вообщем... дело в том что ради красивого эффекта я сделал как бы появление формы и её исчезание. В итоге программа просто "невидима" на фоне игры. Сделал как бы после появления отключение альфа бленда. И при закрытии я его включаю и через тот же АльфаБленд программа спускает его к нулю и закрывается. Но проблема в том что появляется то оно нормально... а вот закрывается... при закрытии программа теряет свой внешний вид и становится черным квадратом. В итоге черный квадрат плавно растворяется на экране... но меня это смущает. Можно как то убрать появившийся из неоткуда черный квадрат?  smile 

Автор: Kirgston 21.2.2009, 11:17
Ребята... ну вот собственно "живой пример" 
http://www.sendspace.com/file/1hi5lh
зеркало
http://rapidshare.com/files/200667642/help.rar.html

Как вы видите сначала всё нормально, но при закрытии форма становится черной... закрывать через крестик =)

Автор: THandle 21.2.2009, 18:43
Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  Form1->AlphaBlend = true;
  Form1->Enabled = false;
  Form1->Repaint();
  while (Form1->AlphaBlendValue!=0) {
      Sleep(30);
      Form1->AlphaBlendValue=Form1->AlphaBlendValue-5;
  }
}


ЗЫ: на форуме файл можно прикреплять к посту

Автор: Kirgston 21.2.2009, 22:43
Ой... извините просто забыл =) 

А если не секрет... зачем репаинт =) я верю что это работает! Но почему надо именно его и что влияет что появляется чёрный квадрат? Извините но уж такой я ... =) я не могу что то понять если не пойму логики =)

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