Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Эффект Bevel (как в Photoshope)   Найти похожие ветки 

 
Alein ©   (2004-10-27 23:03) [0]

Хочу сделать фишку одну:  Bitmap"у придать эффект выпуклости, ну тапа кнопки. Делал тень и отблеск, всё енто добро сглаживал, а потом накладывал из на Bitmap через AlphaBlending. Но получается КАКА. Некрасиво. Помогите!!!! Может у кого такая замутка уже была, мне бы алгоритм.


 
Rouse_ ©   (2004-10-27 23:17) [1]

Делай маску выпуклости и по маске изменяй пиксели...
Что-то наподобие BumpMapping...
ИМХО самое оптимальное...


 
Alein ©   (2004-10-27 23:26) [2]

Спасибо, что ответили,но можно поподробнее про маску...Please. Я её не разу не использовал.


 
Rouse_ ©   (2004-10-27 23:30) [3]

Поищи по слову BumpMapping


 
Rouse_ ©   (2004-10-27 23:31) [4]

http://delphigfx.mastak.ru/samples2.htm
http://delphigfx.mastak.ru/samples/samp22.rar


 
VID ©   (2004-10-27 23:33) [5]

Мы пойдём другим путём :)

Если ты юзаешь TImage или что то подобное то прость поставь ПОД НЕГО TBevel (лежит на странице Aditional) и в свойстве Style этого компонента установи bsRised.

Если же ты вырисовываешь битмам на какой-нить канве, то будь добр после этого (или до этого) динамически создавать тот же TBevel (либо юзать однажды созданный), и его Left, Top, Width, Heigh подстраивать под размеры битмапа на канве.


 
Alein ©   (2004-10-27 23:33) [6]

О"кей, просто мы с корешем пытаемся компонент написать, эдакий ImageButton. Спасибо за совет, я пойду спать, а то уже пол четвёртого утра. Пока.


 
Alein ©   (2004-10-27 23:37) [7]

Чё-то спать перехотелось. А насчёт TBevel- никак нельзя установить высоту, ширину, сглаженность, направление света, а это ограмный минус. Есть компонент itButton, но он зарегиться просит и к тому же OCX, с собой тоскать надо.


 
Alein ©   (2004-10-30 01:31) [8]

Хочу критики и предложений о том, как сделать лучше:

type   TState=(Normal, Over, Press);

Procedure DrawButton(Source:HDC;Border:Integer; x,y,Width,Height:Integer; State:TState);
var BitMap:TBitMap; i, n:Integer; Blend:BlendFunction; MyDib:TFastDIB;
begin
 n:=Border;
 if state=over then n:=n+1;

 blend.BlendOp:=AC_SRC_OVER;
 blend.BlendFlags:=0;
 blend.SourceConstantAlpha:=150;
 blend.AlphaFormat:=0;

 MYDib:=TFastDIB.Create;
 MyDib.Width:=Width;
 MyDib.Height:=Height;

 BitMap:=TBitmap.Create;
 Bitmap.Width:=Width;
 Bitmap.Height:=Height;
 BitBlt(bitmap.Canvas.Handle,0,0,width,height,Source,x,y,srccopy);

 if state<>press then  BitMAp.Canvas.Pen.Color:=clWhite else BitMAp.Canvas.Pen.Color:=clBlack;

 BitMAp.Canvas.Brush.Style:=bsClear;

 for i:=0 to n do begin
 BitMap.Canvas.MoveTo(i,i);
 BitMap.Canvas.LineTo(i,bitmap.Height-i);
 BitMap.Canvas.MoveTo(i,i);
 BitMap.Canvas.LineTo(Bitmap.Width-i,i);
  end;

 if state<>press then  BitMAp.Canvas.Pen.Color:=clBlack else BitMAp.Canvas.Pen.Color:=clWhite;
 for i:=0 to n do begin
 BitMap.Canvas.MoveTo(Bitmap.Width-i,bitmap.Height-i);
 BitMap.Canvas.LineTo(Bitmap.Width-i,i);
 BitMap.Canvas.MoveTo(Bitmap.Width-i,bitmap.Height-i);
 BitMap.Canvas.LineTo(i,bitmap.Height-i);
 end;

 MyDib.LoadFromHandle(Bitmap.Handle);
 FastFX.SplitBlur(MyDib,round(n/(n+1)));
 MyDib.Draw(bitmap.Canvas.Handle,0,0);
 blend.SourceConstantAlpha:=252;
 BitBlt(Bitmap.Canvas.Handle,n+1,n+1,bitmap.Width-(n+1)*2,bitmap.Height-(n+1)*2,Source,x+n+1,y+n+1,srccopy);
 windows.AlphaBlend(Source,x,y,Width,Height,bitmap.Canvas.Handle,0,0,Width,Height, Blend);

 MyDib.Free;
 BitMap.Free;
end;



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

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
9-1090281375
Gun
2004-07-20 03:56
2004.11.14
SIN


14-1098681277
[lamer]Barmaglot
2004-10-25 09:14
2004.11.14
Помогите с цветами...


1-1098972789
Sp0k3r
2004-10-28 18:13
2004.11.14
Строки...


14-1098947558
peypivo
2004-10-28 11:12
2004.11.14
Кодировки


3-1097584335
pok
2004-10-12 16:32
2004.11.14
Проблема при создании dbase ||| table