国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用CB實現圖像的特技顯示

2019-11-17 05:24:59
字體:
來源:轉載
供稿:網友

  在網頁、軟件和游戲中,我們經常可以看到圖像的各種特技顯示,如中心擴散、百葉窗簾、右下推出等,這種動感圖像顯示,往往給人一種心曠神怡的感覺,給我們的應用程序增加了一些美感。在C++ Builder中,我們可以很輕易地實現這些功能。下面以一個具體的例子,介紹實現中心擴散和百葉窗簾兩種顯示技巧,并說明在C++ Builder中處理圖像的基本方法。

在C++ Builder中新建一個工程,然后在窗體上添加一個Image圖像控件,把它的Picture屬性設置為一幅bmp圖像,調節Image控件尺寸與圖像的尺寸大小相同。再在窗體上添加兩個Button控件,把Button1的Caption屬性設置為“中心擴散”、Button2的Caption屬性設置為“百葉窗簾”。

1. 對于“中心擴散”的實現,我們利用一定的算法,通過一定的循環次數,每次顯示圖像的一部分,從圖像的中心位置開始顯示,直到顯示出圖像的整體。




在Button1的OnClick事件中加入以下代碼:

void _fastcall TForm1::Button1Click(TObject *Sender)
{
int i,left,top,width,height;
left = Image1->Left;
top = Image1->Top;
width = Image1->Width;
height = Image1->Height;
for (i = 0; i <= width; i++){
//通過圖像的坐標選定圖像的一部分
Image1->Left = left + (width - i)/2;
Image1->Top = top + height/2 - i*height/width/2;
Image1->Width = i;
Image1->Height = i*height/width;
Image1->Refresh();
}
}

2.對于“百葉窗簾”,我們可利用畫布(Canvas)提供的矩形拷貝(CopyRect)方法在不同畫布之間進行圖像復制來實現,該方法聲明如下:

void _fastcall CopyRect(const Windows::TRect &&Dest, TCanvas*Canvas, const Windows::TRect &&Source);  

把參數Canvas指定的源畫布矩形區域Source復制到目標畫布Dest的矩形區域。利用這種方法,再通過一定的算法,即可實現“百葉窗簾”的特技顯示。

在Button2的OnClick事件中加入以下代碼:

void _fastcall TForm1::Button2Click(TObject *Sender)
{
int inum,icount,i,j;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->Height = Image1->Height;
pBitmap->Width = Image1->Width;
inum =16; //這是百葉窗的葉數
icount = pBitmap->Height /inum;
for (i = 1; i < icount; i++)
for (j = 0; j <= inum; j++){
pBitmap->Canvas->CopyRect(Rect(0,icount*j + i - 1, pBitmap->Width,icount*j + i),Image1->Canvas, Rect(0, icount*j + i - 1,pBitmap->Width, icount*j + i));
Form1->Canvas->Draw(Image1->Left,Image1->Top,pBitmap);
}
delete pBitmap;
}

按F9運行以上程序,即可獲得所需要的“百葉窗簾”效果。

Image圖像控件還提供了另外一些很有用的屬性和方法,大家可以充分利用C++ Builder的幫助,把握了這些屬性和方法,再利用一些程序算法,就可以隨心所欲地寫出各種圖像特技顯示的程序。在我們的應用程序開發中,就可以加入這些圖像特技顯示,為我們的應用程序增加一些光彩。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 和静县| 确山县| 迭部县| 纳雍县| 九江市| 汉沽区| 栾城县| 北碚区| 蒙自县| 韩城市| 喀喇沁旗| 安达市| 西峡县| 方山县| 宾阳县| 阳城县| 麻栗坡县| 汉沽区| 堆龙德庆县| 肥乡县| 云林县| 石屏县| 时尚| 秦安县| 渝中区| 克东县| 宁德市| 台北县| 寿光市| 曲麻莱县| 平昌县| 洞头县| 镶黄旗| 阿拉尔市| 崇明县| 壤塘县| 元朗区| 南乐县| 武山县| 得荣县|