PDA

Просмотр полной версии : [Руководство] Заливаем бокс градиентом....


крайслер
03.12.2012, 13:13
Результат:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]


void Grad_Box(int x, int y, int h, int w, DWORD Color_1, DWORD Color_2,LPDIRECT3DDEVICE9 pDevice)
{
float aPer,rPer,gPer,bPer;
DWORD Colorit;
DWORD a_1 = (Color_1>>24)&0xFF;
DWORD r_1 = (Color_1>>16)&0xFF;
DWORD g_1 = (Color_1>>8) &0xFF;
DWORD b_1 = Color_1 &0xFF;
DWORD a_2 = (Color_2>>24)&0xFF;
DWORD r_2 = (Color_2>>16)&0xFF;
DWORD g_2 = (Color_2>>8) &0xFF;
DWORD b_2 = Color_2 &0xFF;
aPer = ((float)a_2-(float)a_1)/h;
rPer = ((float)r_2-(float)r_1)/h;
gPer = ((float)g_2-(int) g_1)/h;
bPer = ((float)b_2-(float)b_1)/h;
for(int i = 0;i<h;i++){
Colorit = (a_1+(int)(aPer*i) << 24)
| (r_1+(int)(rPer*i) << 16)
| (g_1+(int)(gPer*i) << 8)
| (b_1+(int)(bPer*i));
DrawBox(x,y+i,w,1,Colorit, pDevice);
}
}

Используем так:
Grad_Box(X, Y, Ширина, Высота, Верхний_Цвет,Нижний_Цвет,pDevice);


Чтобы заливать по горизонтальному направлению
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
изменяем код на это:
aPer = ((float)a_2-(float)a_1)/w;
rPer = ((float)r_2-(float)r_1)/w;
gPer = ((float)g_2-(int)g_1)/w;
bPer = ((float)b_2-(float)b_1)/w;
for(int i = 0;i<w;i++){
Colorit = (a_1+(int)(aPer*i) << 24)
| (r_1+(int)(rPer*i) << 16)
| (g_1+(int)(gPer*i) << 8)
| (b_1+(int)(bPer*i));
DrawBox(x+i,y,1,h,Colorit, pDevice);
}

slava-zis
03.12.2012, 22:44
Ой божечки... Сколько фпс отъест пара таких боксов? Хотя так молодец, идея отлична, но лучше как-нибудь по другому реализовывать.

з.ы. ты хоть сам с первого раза понял как работают эти битовые операции? хардкорно написано..

крайслер
03.12.2012, 22:58
Ой божечки... Сколько фпс отъест пара таких боксов? Хотя так молодец, идея отлична, но лучше как-нибудь по другому реализовывать.

з.ы. ты хоть сам с первого раза понял как работают эти битовые операции? хардкорно написано..
Насчет фпс не проверял...Насчет операций - нет. Код взят с Ук-форумА и совсем незначительно изменен.(указал бы первоисточник, но к сожелению на код наткнулся давно и сохранил в txt)

теперь делай гайд как картинку ставить
Возьми исходник со спрайтами и посмотри, ну или как вариант грузить с рессурса(СтартерКит_ЧитОн v1.v тебе в помощь)....

Annedroid
07.12.2012, 13:28
Фу... Цикл for градиент по линии отрисовывает что ли?

mr*WOLF
09.12.2012, 16:55
Фу... Цикл for градиент по линии отрисовывает что ли?

А чем плох такой метод?

slava-zis
09.12.2012, 17:17
А чем плох такой метод?
нагрузкой...

smile33
09.12.2012, 23:27
нагрузкой...
дык скажи как по другому,а то в голову не лезет нечего
идеи исчерпаны ,фантазия R.I.P

iamzero
10.12.2012, 11:24
дык скажи как по другому,а то в голову не лезет нечего
идеи исчерпаны ,фантазия R.I.P
пора на пенсию тогда....