Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Эффект 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
1-1098818523
Yanis
2004-10-26 23:22
2004.11.14
С++ => Delphi


3-1097821814
Viktor1
2004-10-15 10:30
2004.11.14
Помогите с запросом (перекрёстный)!!!


8-1086176663
Petrush
2004-06-02 15:44
2004.11.14
Непростой плеер для винды.


14-1098646019
Piter
2004-10-24 23:26
2004.11.14
Ура! У нас тоже появляется доступный выделенный интернет


8-1092003941
Vince
2004-08-09 02:25
2004.11.14
Антиалиасинг кривой Безье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский