Главная страница
    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.032 c
1-1122644308
Destroyer
2005-07-29 17:38
2005.08.21
Как из статического массива сделать динамический?


14-1122640053
NeMaster
2005-07-29 16:27
2005.08.21
как двигать мышь


1-1122543757
infom
2005-07-28 13:42
2005.08.21
Форма обработки данных с анимацией


1-1122845585
SpyBoy
2005-08-01 01:33
2005.08.21
A la windows xp


3-1120630001
Shopot
2005-07-06 10:06
2005.08.21
BDE. Бывают проблемы с сохранением данных в базе.





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