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

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх




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


4-1120460219
Alex Che
2005-07-04 10:56
2005.08.21
как определить размер зерна монитора


14-1122644916
Nick Denry
2005-07-29 17:48
2005.08.21
Народ, а как правильно создать


4-1119797610
Толян
2005-06-26 18:53
2005.08.21
Форматирования диска


14-1122371868
MBo
2005-07-26 13:57
2005.08.21
Пляшущие человечки наномира ;)





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