Вниз
Скачать: CL | DM;

Как сделать переходы между менюшками?   Найти похожие ветки 

← →
NailMan ©   (2003-08-11 12:58) [0]

Собсно сабж.

Образец демо-версии менюшек (*.EXE) можно скачать здесь:
http://nailman.narod.ru/zakroma/UT_GUI_Demo.rar

RAR 3.0, 755Кб. Чистый DirectX;

Версия исправленная(раньше без джоя не запускалась :-)) и добавлены червячки ala Матрица.

Сосбно не радует что переход из менюшки в менюшку резкий(резко меняется бэкграунд). Хотелось бы сделать это дело через переход в виде:
- шторок сверху-снизу. выхотя из менюшки схлопываются, а прри входе расхлопываются.
- затухание экрана
- еще как-то

Пробовал делать первый вариант через рисование кусочка текстуры черного цвета(D3DXSprite-ом) - какие-то левые линии на краях видны, которые масштабируются вместе со спрайтом. Пробовал делать через вершинный буфер(XYZRHW) 4 треугольника (2 снизу 2 сверху) - какие-то глюки рисуются.

Второй вариант я не догоняю как реализовать. Гаммарампой? Че-то не понял я как юзать структуру TD3DGAMMARAMP. Как затенить весь экран с ее помощью?
Возникла идея сделать прямоугольник на весь экран, черного цвета и когда должно происходить затемнение просто увеличивать альфу у вершин/материала.

Кто чего подскажет? Может более оригинальные варианты?


← →
Карлсон ©   (2003-08-11 13:57) [1]

насчет гаммарампы - насколько я понял, именно так и делается это самое затухание.
где-то тут была такая тема, там один человек написал модуль для DirectX"а.
я его переделал для DelphiX:
unit Effects;

interface

uses
Windows, DXDraws, DirectDraw;

Procedure FadeIn(DXDraw: TDXDraw; Time: cardinal);
Procedure FadeOut(DXDraw: TDXDraw; Time: cardinal);

implementation

Procedure FadeIn(DXDraw: TDXDraw; Time: cardinal);
var
i,j : integer;
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
begin
DXDraw.Primary.GammaControl.QueryInterface(IID_IDirectDrawGammaControl ,Gamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,OldGamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,NewGamma);
for j := 1 to 100 do
begin
for i :=0 to 255 do
begin
NewGamma.green[i]:=(OldGamma.green[i]*j)div 100;
NewGamma.blue[i]:=(OldGamma.blue[i]*j)div 100;
NewGamma.red[i]:=(OldGamma.red[i]*j)div 100;
end;
DXDraw.Primary.GammaControl.SetGammaRamp(0,NewGamma);
Sleep(Time);
end;
Gamma := nil;
end;

Procedure FadeOut(DXDraw: TDXDraw; Time: cardinal);
var
i,j : integer;
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
begin
DXDraw.Primary.GammaControl.QueryInterface(IID_IDirectDrawGammaControl ,Gamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,OldGamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,NewGamma);
for j := 100 downto 1 do
begin
for i :=0 to 255 do
begin
NewGamma.blue[i]:=(OldGamma.blue[i]*j)div 100;
NewGamma.green[i]:=(OldGamma.green[i]*j)div 100;
NewGamma.red[i]:=(OldGamma.red[i]*j)div 100;
end;
DXDraw.Primary.GammaControl.SetGammaRamp(0,NewGamma);
Sleep(Time);
end;
if NewGamma.red[0]=0 then
DXDraw.Primary.GammaControl.SetGammaRamp(0,oldGamma);
Gamma := nil;
end;

end.

может и найду первоначальный источник или ту ветку.


← →
Карлсон ©   (2003-08-11 13:59) [2]

вот та ветка: http://delphimaster.net/view/9-1050737499/


← →
NailMan ©   (2003-08-11 14:09) [3]

Пасиба, сегодня буду ковырять и обновлять.

Кстате, а управление рампой на всех видюхах работает? Что произойдет если я начну ее дрюкать, а видюха этого аппаратно не поджеривает?


← →
TButton ©   (2003-08-11 16:14) [4]

а чо за юнит DirectDraw?


← →
Всеволод Соловьёв ©   (2003-08-11 21:58) [5]

>а чо за юнит DirectDraw?
что за зверь DirectX?


← →
TButton ©   (2003-08-11 23:41) [6]

блин. я не дурак.
Я знаю что за зверь директ Х. Но (!) компилятор жалуется на отсутствие DirectDraw.dcu, ну я ему конечно не поверил "как так нету?!" и полез искать, оказывается действительно нету. Вот почему испрашиваю что ето и откуда.


← →
Всеволод Соловьёв ©   (2003-08-12 11:29) [7]

а исходник pas-файлом есть? если есть, так что за проблема?


← →
TButton ©   (2003-08-12 15:30) [8]

это я не подумал...
нету. мож скачать его где? а мож есть у кого?


← →
NailMan ©   (2003-08-12 15:51) [9]

Для какого директа тебе выслать?

Есть для 8.0/8.1 и 9.0


← →
NailMan ©   (2003-08-12 15:55) [10]

Короче я тебе послал оба варианта. Пиши если чё-то еще хочет из модулей.


← →
TButton ©   (2003-08-12 19:02) [11]

gracies



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.02 c
3-79575
werq
2004-01-29 13:10
2004.02.25
Мастаки, какой есть бесплатный компонент по сохранению в DBF?


14-80240
race1
2004-01-29 16:02
2004.02.25
комп для музыканта


1-79894
Vag
2004-02-13 22:10
2004.02.25
Не закрывабшася программа?


9-79537
R0man
2003-08-11 08:45
2004.02.25
Как сделать дифференциал для авто?


1-79773
Yuri Btr
2004-02-11 21:17
2004.02.25
Уникальность Pointer в TList




   Наверх