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

Вниз

Создание кнопки с эффектом стекла...   Найти похожие ветки 

 
Crazzy Jazzy   (2005-04-12 15:23) [0]

Здраствуйте!

Ну наподобии как у кнопок или элементов меню в MacOS...

Спасибо!


 
XProger ©   (2005-04-13 14:10) [1]

Image1.LoadFromFile("...");


 
clampo ©   (2005-04-13 22:24) [2]

Photoshop 8.0 - решит тови проблемы


 
thaddy   (2005-04-14 00:38) [3]

Alpha blending with the alpha value put through an algorithm similar (equal) to gradient


 
programania ©   (2005-04-14 21:21) [4]

PhotoShopом пусть рисуют кто не может программы писать
А программой рисовать лучше,
потому что код меньше места занимает чем картинка,
код один для разных размеров, формы, цветов,
можно сделать полупрозрачность и антиалиазинг с разным фоном,
можно получить бесконечно много вариантов меняя
случайно несколько параметров,  можно это делать в timer
чтоб все сверкало и переливалось.
Для примера кнопка типа стекла или воды
А кто сможет красивее?
пример: knopka(image1,$FF9080);

PROCEDURE knopka(i:tImage;cw:integer);
type
tm=array[0..40{макс.высота},0..120{ширина},1..3] of byte;
var
z:array[1..3] of integer;
cr,r,v,q,xx,yy,j,h4,h6,h8,x,y,h,w:integer;
yk: boolean;
m,f :^tm;
begin
w:=i.width;   if w>120 then w:=120;
h:=i.height;  if h>40  then h:=40;
getMem(m,sizeOf(tm));getMem(f,sizeOf(tm));

with i.canvas do begin
i.transparent:=true;
i.picture.bitmap.pixelformat:=pf24bit;

//сохранение фона
for y:=0 to h-1 do move(i.picture.bitmap.ScanLine[y]^,f^[y,0,1],w*3);
//цвет рамки потемнее
cr:=RGB(getRvalue(cw) div 16,getGvalue(cw) div 16,getBvalue(cw) div 16);
pen.color:=cr;
brush.color:=pen.color;
fillRect(rect(0,0,w,h));
brush.color:=cw;
pen.width:=3;
roundRect(1,1,w-1,h-1,16,16);

for y:=0 to h-1 do move(i.picture.bitmap.ScanLine[y]^,m^[y,0,1],w*3);
//блик
h6:=h div 6; h4:=h div 4; h8:=h div 8;
for x:=h4+2 to w-h4-2 do
for j:=1 to 3 do begin
for v:=0 to 3 do begin
//сверху
 r:=m^[h6+v+1,x,j]+(4-v)*44; if r>=$FF then r:=$FE;
 m^[h6+v+1,x,j]:=r;
//снизу
 if v>2 then m^[h-h6-v+1,x,j]:=$FE;
end;
end;

//размытие
for y:=0 to h-1 do begin
for x:=0 to w-1 do
if ((y<>h6+1)and(y<>h6+2))or(x<=h4+5)or(x>=w-h4-5) then
if rgb(m^[y,x,3],m^[y,x,2],m^[y,x,1])=cr then
 for j:=1 to 3 do m^[y,x,j]:=f^[y,x,j]
 else begin
   q:=0; z[1]:=0; z[2]:=0; z[3]:=0;
   for yy:=y-2 to y+2 do
   for xx:=x-2 to x+2 do
   if (yy>=0)and(yy<h) and (xx>=0)and(xx<w) then begin
     for j:=1 to 3 do inc(z[j],m^[yy,xx,j]);
     inc(q);
   end;
   for j:=1 to 3 do m^[y,x,j]:=z[j] div q;
 end;
 move(m^[y,0,1],i.picture.bitmap.ScanLine[y]^,w*3);
end;
freeMem(m);freeMem(f);
end;
end;



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

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

Наверх




Память: 0.46 MB
Время: 0.05 c
1-1123134256
TerminalHead
2005-08-04 09:44
2005.08.21
Горячие клавишы


1-1122904145
BFG9k
2005-08-01 17:49
2005.08.21
Перемещение компонента по форме


14-1122490026
Dimedrol
2005-07-27 22:47
2005.08.21
Bluetooth


3-1121255279
Валерий
2005-07-13 15:47
2005.08.21
Как правильно запретить редактирование записи


14-1122378949
Viktop
2005-07-26 15:55
2005.08.21
XML в Delphi





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