本文論述了用Delphi進(jìn)行圖形界面修飾的技術(shù),給出了窗口漸變色背景、3D邊界、3D邊框的實(shí)現(xiàn)源代碼和一個(gè)軟件界面的實(shí)例。
作為一個(gè)程序員,在開發(fā)程序的時(shí)候,都希望自己程序的界面美觀一些,與眾不同一些,有自己鮮明的特色,這需要美化自己的界面。一般的方法是用圖形工具制作一個(gè)圖形界面,再經(jīng)過簡單的編程便可獲得一個(gè)理想的效果,很多能夠界面換膚的程序大多也基于這種思
想;但程序員一般不精通圖形制作工具,請外面的美工來做也不方便,其實(shí)對一般的3D效果,我們自己也可用程序做。
編程方式實(shí)現(xiàn)3D效果的方法
為了改變電腦早期時(shí)候的文字界面的單一狀況,各大軟件公司都作出了不懈努力,先后推出了作為圖形處理工業(yè)標(biāo)準(zhǔn)的OpenGL和微軟研發(fā)的Direct3D,至于一些公司自用的3D技術(shù)更是不計(jì)其數(shù)。但本文提出的方法不需要上面大公司的技術(shù),純粹用Delphi的基本函數(shù)來實(shí)現(xiàn)比較逼真的3D效果。
我以前作過一個(gè)卡拉OK電腦點(diǎn)歌程序,點(diǎn)歌方式有多種,其中有一種傳統(tǒng)的點(diǎn)歌方式叫編碼點(diǎn)歌,它需要在屏幕上畫一個(gè)點(diǎn)歌鍵盤,用鼠標(biāo)點(diǎn)擊鍵盤(觸摸屏?xí)r用手觸摸)輸入歌曲編碼
圖中除了迎客松的圖片外,其它如背景、銅柱邊框、3D鍵盤等都是由程序?qū)崿F(xiàn)的,下面我對實(shí)現(xiàn)程序予以簡單說明,上圖界面的完整實(shí)現(xiàn)請看本文附帶的源程序。
在給出程序之前先說一下技術(shù)思想,Delphi中有些對象具有畫布屬性Canvas,它本身也是一個(gè)對象,它具有很多屬性和方法,這里只列出本文用到的幾個(gè)。
Canvas.Brush.Style:=bsClear;//設(shè)置畫刷風(fēng)格
Canvas.pen.color:=rgb(R,G,B);// 設(shè)置畫筆顏色
Canvas.pen.style:=psSolid;// 設(shè)置畫筆風(fēng)格
Canvas.pen.width:=1;//設(shè)置畫筆寬度
procedure MoveTo(X, Y: Integer);
//將畫筆移到坐標(biāo)(X, Y) 處作為畫畫的起點(diǎn)
procedure LineTo(X, Y: Integer);
//從當(dāng)前位置畫一條直線到坐標(biāo)(X, Y) 處
procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer);
//根據(jù)給定的參數(shù)畫一個(gè)圓角矩形,X3、Y3用于確定圓角大小
下面給出3D效果制作子程序:
1、 背景制作子程序
本段程序是用來畫背景,只要給出不同的顏色RGB值就能畫出不同的背景。下面的子程序都是利用對象的畫布Canvas并按一定的算法來生成效果。
procedure draw_bk(Sender:TForm;R,G,B:integer);
var i,j,k:integer;
begin
with Sender do
begin
canvas.pen.style:=psSolid;
canvas.pen.width:=1;
k:=(B div 3)*2;
for i:=0 to 480 do
begin
if i if j>B then j:=B;
Canvas.pen.color:=rgb(R,G,B-j);
canvas.moveTo(0,i);
canvas.lineTo(640,i);
end;
end;
end;
作為一個(gè)程序員,在開發(fā)程序的時(shí)候,都希望自己程序的界面美觀一些,與眾不同一些,有自己鮮明的特色,這需要美化自己的界面。一般的方法是用圖形工具制作一個(gè)圖形界面,再經(jīng)過簡單的編程便可獲得一個(gè)理想的效果,很多能夠界面換膚的程序大多也基于這種思
想;但程序員一般不精通圖形制作工具,請外面的美工來做也不方便,其實(shí)對一般的3D效果,我們自己也可用程序做。
編程方式實(shí)現(xiàn)3D效果的方法
為了改變電腦早期時(shí)候的文字界面的單一狀況,各大軟件公司都作出了不懈努力,先后推出了作為圖形處理工業(yè)標(biāo)準(zhǔn)的OpenGL和微軟研發(fā)的Direct3D,至于一些公司自用的3D技術(shù)更是不計(jì)其數(shù)。但本文提出的方法不需要上面大公司的技術(shù),純粹用Delphi的基本函數(shù)來實(shí)現(xiàn)比較逼真的3D效果。
我以前作過一個(gè)卡拉OK電腦點(diǎn)歌程序,點(diǎn)歌方式有多種,其中有一種傳統(tǒng)的點(diǎn)歌方式叫編碼點(diǎn)歌,它需要在屏幕上畫一個(gè)點(diǎn)歌鍵盤,用鼠標(biāo)點(diǎn)擊鍵盤(觸摸屏?xí)r用手觸摸)輸入歌曲編碼
圖中除了迎客松的圖片外,其它如背景、銅柱邊框、3D鍵盤等都是由程序?qū)崿F(xiàn)的,下面我對實(shí)現(xiàn)程序予以簡單說明,上圖界面的完整實(shí)現(xiàn)請看本文附帶的源程序。
在給出程序之前先說一下技術(shù)思想,Delphi中有些對象具有畫布屬性Canvas,它本身也是一個(gè)對象,它具有很多屬性和方法,這里只列出本文用到的幾個(gè)。
Canvas.Brush.Style:=bsClear;//設(shè)置畫刷風(fēng)格
Canvas.pen.color:=rgb(R,G,B);// 設(shè)置畫筆顏色
Canvas.pen.style:=psSolid;// 設(shè)置畫筆風(fēng)格
Canvas.pen.width:=1;//設(shè)置畫筆寬度
procedure MoveTo(X, Y: Integer);
//將畫筆移到坐標(biāo)(X, Y) 處作為畫畫的起點(diǎn)
procedure LineTo(X, Y: Integer);
//從當(dāng)前位置畫一條直線到坐標(biāo)(X, Y) 處
procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer);
//根據(jù)給定的參數(shù)畫一個(gè)圓角矩形,X3、Y3用于確定圓角大小
下面給出3D效果制作子程序:
1、 背景制作子程序
本段程序是用來畫背景,只要給出不同的顏色RGB值就能畫出不同的背景。下面的子程序都是利用對象的畫布Canvas并按一定的算法來生成效果。
procedure draw_bk(Sender:TForm;R,G,B:integer);
var i,j,k:integer;
begin
with Sender do
begin
canvas.pen.style:=psSolid;
canvas.pen.width:=1;
k:=(B div 3)*2;
for i:=0 to 480 do
begin
if i
Canvas.pen.color:=rgb(R,G,B-j);
canvas.moveTo(0,i);
canvas.lineTo(640,i);
end;
end;
end;