欢迎来到天天文库
浏览记录
ID:26881274
大小:364.32 KB
页数:34页
时间:2018-11-29
《cbuilder的多媒体世界》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十一章C++Builder的多媒體世界在這個新的世代,圖片、動畫充斥在我們的身邊,BCB當然也不能在多媒體這塊區域缺席。在第11章我們將介紹各種多媒體元件的使用,也討論有關繪圖部分的設計,更深入探討影像繪圖處理上的速度,由於完整的元件支援,對於花俏功能的多媒體程式開發,對讀者們來說已經不再是高深的程式。大綱11-1Image元件的建立11-2ImageList元件的建立11-3Animate動畫元件11-4MediaPlayer元件11-5繪圖功能本章習題11-1Image元件的建立圖形檔案的表現是本章所要介紹最基本的功能,BC
2、B提供圖形載入的元件,可以方便的讓我們操作圖形顯示和處理的動作,也就是本節所要介紹的Image元件。Image元件不但可以讓我們把圖檔的內容顯示在Image元件的顯示範圍之內,我們也可以針對開啟的圖檔存在元件屬性裡的資料作處理,也就是利用Image元件作為介面,讓我們來編輯圖形檔案的內容。Image圖形元件的主要屬性屬性(Properties)型態原型說明AutoSizebool是否讓圖形顯示自動調整CanvasTCanvas描繪圖像Centerbool調整圖像在顯示範圍的中間PictureTPicture載入圖像Heightin
3、t顯示方塊的長度Widthint顯示方塊的寬度Transparentbool背景是否透明Strecthbool是否縮放圖像圖檔的載入方式我們可以用兩種方法載入檔案:第一種最簡單的就是用物件編輯器(ObjectInspector)來手動放入檔案:我們在程式開發模式下在我們所建立的Image元件上面按兩下滑鼠左鍵,這時就會出現載入圖檔的對話視窗,這時我們按下Load鍵就可以開啟檔案瀏覽的對話盒來指定要載入的檔案。目前支援的圖檔格式有jpg,bmp,ico,emt,wmf等一般常見的檔案格式。另一種方式我們可以利用Picture屬性裡的
4、LoadFromFile的函式在程式執行時把圖檔資訊餵進去,除了在程式裡面把檔案的路徑和名稱寫死,這樣子在編譯時期就決定了要載入的檔案;我們還可以動態的指定檔案,譬如說讓使用者輸入,或是可以藉由OpenDialog元件或是OpenPictureDialog元件讓我們隨意的開啟所需要顯示的圖檔。11-2ImageList元件的建立如果我們要設計的應用程式需要使用很多的圖檔,或是要大量的作圖檔的存取動作,將每個Image元件的載入動作都做設定是一件很費力的事情。這個時候我們也許會需要一個可以管理這些圖形的方法。而TImageList元
5、件顧名思義就是集中各個Image圖像成為一個圖像的列表,用意在可以讓我們便於管理圖像的存取,但是有一個非常重要的限制,就是列表中的圖像大小要完全一樣。ImageList元件的重要屬性屬性(Properties)型態原型說明AllocByInt預設的List空間BkColorTColor影像繪出時的背景顏色BlendColorTColor影像繪出時的前景混合色CountInt目前所存入List的圖像數目HeightInt指定List裡每個影像的高度WidthInt指定List裡每個影像的寬度ImageTypeTimageType影像
6、繪出時是否加入mask影像MaskedBool指定影像繪出時是否可以加入mask使用開發工具編輯ImageList我們從右圖裡可以看到幾個主要的部分,下面的Images裡所顯示的是目前List裡所有的Image,當點選了之後可以在SelectedImage格裡看到預覽畫面,而每個圖像的下面所顯示的數字就是該圖像在這個List裡面的Index編號,這是很重要的資訊,我們在存取時所要指定圖像就得要知道該圖像在列表裡的編號。使用程式碼編輯ImageList除了用編輯畫面加入圖像,我們也可以在程式碼裡利用內建的函式將圖像加入列表裡,如Ad
7、d(),AddImage()等等。使用方式如:Add(Graphics::TBitmap*Image,Graphics::TBitmap*mask);就是指定Bitmap格式的圖像加入List裡。另外顯示圖像的方式我們可以利用Draw()函式,方法如下:Draw(Graphics::TCanvas*,intx,inty,intIndex);就是給予繪圖的元件,繪圖的起始座標x和y,以及要繪出圖像在ImageList裡的Index編號。另外我們也可以利用Delete()和Clear()兩個函式把ImageList既有的圖像刪除,De
8、lete函式是指定單一圖像一一刪除,所以我們必須在使用Delete()時要指定所要刪除圖像的Index編號,而Clear()函式則是將所有在列表裡的圖像全部刪除,用法如下:Delete(intIndex);Clear();11-3Animate動畫
此文档下载收益归作者所有