Главная страница
    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.031 c
1-1098889541
Tack
2004-10-27 19:05
2004.11.14
UNICODE и тип String в национальных версиях Win32


1-1099400578
Strimer
2004-11-02 16:02
2004.11.14
Возможно ли разместить вертикальный текст на кнопке?


3-1097693800
kirilllius
2004-10-13 22:56
2004.11.14
обменном данных


1-1098873662
Leonid
2004-10-27 14:41
2004.11.14
TMainmenu


14-1098869043
Drakon
2004-10-27 13:24
2004.11.14
Запуск программ для Linux под Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский