<cite id="lbrnp"></cite>

<ins id="lbrnp"><form id="lbrnp"></form></ins>
<delect id="lbrnp"></delect>

<delect id="lbrnp"><track id="lbrnp"><cite id="lbrnp"></cite></track></delect>

<delect id="lbrnp"><form id="lbrnp"></form></delect>

      <delect id="lbrnp"></delect>

        <ins id="lbrnp"><form id="lbrnp"><delect id="lbrnp"></delect></form></ins>

          三度網教程:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

          C++ Builder 中的圖像顯示技巧

          時間:2023-9-14作者:未知來源:三度網教程人氣:


          文/黃建志

            在C++ Builder中,實現一幅圖像的顯示非常簡單,只要在Form窗體中定義一個TImage組件,設置其Picture屬性,然后選擇任何有效的.ico、.bmp、.emf或.wwf文件,加載進來,所選文件就顯示在TImage組件中。但這只是直接將圖形顯示在窗體中,毫無技巧可言,給人感覺是一種枯燥乏味。為了使圖形顯示有別具一格的效果。按下列步驟實現:

            1、 定義一個TImage組件,把要顯示的圖形先加載到TImage組件中,也就是說,把圖  
          形內容從磁盤載入內存中,作為圖形緩存。

            2、 創建一新的位圖對象,其尺寸跟TImage組件中的圖形一樣。

            3、 利用畫布(Canvas)的CopyRect功能(將一個畫布的矩形區域拷貝到另一個畫布的矩形區域),以達到動態顯示位圖。

            下面介紹各種圖形顯示技巧的具體實現方法。

            上拉效果


          圖1

            實現原理:首先將暫存圖形的第一條水平線,搬移至要顯示位圖的最后一條,接著再將暫存圖形的前兩條水平線,依次搬移至要顯示位圖的最后兩條水平線,然后搬移前三條、前四條直到全部圖形數據搬完為止。在搬移的過程中即可看到顯示的位圖由下而上浮起,而達到上拉的效果(如圖1)。

            程序算法:

            void _fastcall TFor-

            m1::Button1Click(TObject *Sender)

             {int i,width,height;

            Graphics::TBitmap *newbmp;

            newbmp=new Graphics::TBitmap;

            newbmp-〉Width=Image1-〉Width;

            newbmp-〉Height=Image1-〉Height;

            width=Image1-〉Width;

            height=Image1-〉Height;

            for(i=0;i

            {newbmp-〉Canvas-〉CopyRect(Rect(0,height-i,width,height),

            Image1-〉Canvas,Rect(0,0,width,i));

            Form1-〉Canvas-〉Draw(10,10,newbmp);}

            delete newbmp;}

            從左向右平鋪顯示效果


          圖2

            實現原理:首先將暫存圖形的最后一條豎線,搬移至要顯示位圖的第一條豎線,接著再將暫存圖形的最后兩條豎線,依序搬移至要顯示位圖的前兩條豎線,然后搬移最后三條、四條豎線直到全部圖形數據搬完為止。在搬移的過程中即可看到顯示的位圖由左向右浮起,而達到從左向右平鋪顯示的效果(如圖2)。

            程序算法:

            void _fastcall TForm1::Button2Click(TObject *Sender)

            {int i,width,height;

            Graphics::TBitmap *newbmp;

            newbmp=new Graphics::TBitmap;

            newbmp-〉Width=Image1-〉Width;

            newbmp-〉Height=Image1-〉Height;

            width=Image1-〉Width;

            height=Image1-〉Height;

            for(i=0;i<=width;i++)

            { newbmp-〉Canvas-〉

            CopyRect(Rect(0,0,i,height),

            Image1-〉Canvas,Rect(width-i,0,width,height));

            Form1-〉Canvas-〉Draw(10,10,newbmp); }

            delete newbmp;}

            垂直交錯效果


          圖3

            實現原理:將要顯示的圖形拆成兩部分,奇數條掃描線由上往下搬移,偶數條掃描線則由下往上搬移,而且兩者同時進行。便可看到分別由上下兩端出現的較淡圖形向屏幕中央移動,直到完全清楚為止(如圖3)。

            程序算法:

            void __fastcall TForm1::BitBtn3Click(TObject *Sender)

            {Graphics::TBitmap *newbmp;

            int i,j,height,width;

            newbmp=new Graphics::TBitmap;

            newbmp-〉Width=Image1-〉Width;

            newbmp-〉Height=Image1-〉Height;

            height=Image1-〉Height;

            width=Image1-〉Width;

            i=0;

            while(i<=height)

            {for(j=0;j

            {newbmp-〉Canvas-〉CopyRect(Rect(j*2,0,j*2+1,i),Image1-〉Canvas,

            Rect(j*2,0,j*2+1,i));

            newbmp-〉Canvas-〉CopyRect(Rect(j*2+1,height,j*2+2,height-i),

            Image1-〉Canvas, Rect(j*2+1,height,j*2+2,height-i)); }

            Form1-〉Canvas-〉Draw(10,10,newbmp);

            i+=2; }

            delete newbmp;}

            水平交錯效果


          圖4

            實現原理:同垂直交錯效果原理一樣,將要顯示的圖形拆成兩部分,奇數條掃描線由左往右搬移,偶數條掃描線則由右往左搬移,兩者同時進行。從屏幕上便可看到分別由左右兩端出現的較淡圖形向屏幕中央移動,直到完全清楚為止(如圖4)。

            程序算法:

            void __fastcall TForm1::BitBtn4Click(TObject *Sender)

            {int i,j,height,width;

            Graphics::TBitmap *newbmp;

            newbmp=new Graphics::TBitmap;

            newbmp-〉Width=Image1-〉Width;

            newbmp-〉Height=Image1-〉Height;

            height=Image1-〉Height;

            width=Image1-〉Width;

            i=0;

            while(i<=height)

            {for(j=0;j

            {newbmp-〉Canvas-〉CopyRect(Rect(0,j*10,i,j*10+5),Image1-〉Canvas,

            Rect(0,j*10,i,j*10+5));

            newbmp-〉Canvas-〉CopyRect(Rect(width-i,j*10+5,width,j*10+10),

            Image1-〉Canvas, Rect(width-i,j*10+5,width,j*10+10)); }

            Form1-〉Canvas-〉Draw(10,10,newbmp);

            i+=2; }

            delete newbmp;}

            從左到右圓筒滾動效果


          圖5

            實現原理:圖形復制過程中,把目標圖形的坐標按照曲線方式移動,以達到圓筒滾動效果(如圖5)。

            程序算法:

            void __fastcall TForm1::BitBtn5Click(TObject *Sender)

            {int i,j,height,width;

            Graphics::TBitmap *newbmp;

            newbmp=new Graphics::TBitmap;

            newbmp-〉Width=Image1-〉Width;

            newbmp-〉Height=Image1-〉Height;

            height=Image1-〉Height;

            width=Image1-〉Width;

            i=0;

            int intr=50;

            for(i=0;i<=width;i+=5)

            {for(j=1;j<=2*intr;j++)

            {newbmp-〉Canvas-〉CopyRect(Rect(i+j,-sqrt(2*intr*j-j*j),i+j+1,-sqrt(2*intr*j-j*j)+height),Image1-〉Canvas,Rect(i+j,0,i+j+1,height));}

            newbmp-〉Canvas-〉CopyRect(Rect(i,0,i+5,height),Image1-〉Canvas,Rect(i,0,i+5,height));

            Form1-〉Canvas-〉Draw(10,10,newbmp);

            Sleep(10); }}

            所有程序算法都在C++ Builder 4.0和5.0調試通過。 

          關鍵詞:  C++  Builder  中的圖像顯示技巧





          Copyright © 2012-2018 三度網教程(http://www.shuofei.net) .All Rights Reserved 網站地圖 友情鏈接

          免責聲明:本站資源均來自互聯網收集 如有侵犯到您利益的地方請及時聯系管理刪除,敬請見諒!

          QQ:1006262270   郵箱:kfyvi376850063@126.com   手機版 

          小红书a v,亚洲精品无码A V片一区二区三区发表贴子国产精品国产精品一区精品国产自在现偷99精品国产在热2023国产拍偷精品网国产精品视频全国免费观看亚洲精品无码A V片一区二区三区相关贴推荐最热最新38卖23一区的v3和二区的v5以后转战A V饭了一区的50块(卡没动)二区的100块国产精品国产精品一区精品国产自在现偷99精品国产在热2023国产拍偷精品网国产精品视频全国免费观看,亚洲国产成人精品久久久999精品国产精品v欧美精品v日韩精品青青精品视频国产久久国产精品久久精品国产亚洲精品国产精品国产欧美精品一区二区三区久久久国产亚州高清国产拍精品女人和拘做受全程看视频欧美一级黄色片亚洲国产成人久久综合碰碰动漫3d午夜一级毛片国产精品v欧美精品v日韩精品青青精品视频国产久久国产精品久久精品国产亚洲精品国产精品国产欧美精品一区二区三区国产精品第一页国产亚洲精品国产福利国产精品自拍国产精品视频在线观看亚洲国产精品一区二区久久国产精品国产三级国产专不,99久久无码一区人妻99久久九九社区精品国产精品第一页国产亚洲精品国产福利国产精品自拍国产精品视频在线观看亚洲国产精品一区二区久久国产精品国产三级国产专不99久久精品免费看国产99久久精品免费观看国产一级亚洲色惰片丁香久久最新欧美交换配乱婬粗大视频视频一区国产自拍日本无码国产精品视频大陆精大陆国产国语精品2023精品国产品对白在线23年香蕉精品国产高清自在自线隔壁老王国产在线精品在线观看精品国产福利片,无码国产精品一区二区免费式影视久久国产精品视频大陆精大陆国产国语精品2023精品国产品对白在线65年香蕉精品国产高清自在自线隔壁老王国产在线精品在线观看精品国产福利片国产精品狼人亚洲国产精品久久精品久久国产菠萝在线视频国产精品尤物极品在线国精品国产亚洲第一区99久久精品国产百合国产精品视频大陆精大陆国产国语精品2023精品国产品对白在线50年香蕉精品国产高清自在自线隔壁老王国产在线精品在线观看精品国产福利片,国产三级精品三级在专区精品国产自在现偷国产精品一区二区三区国产日韩精品欧美一区喷水亚洲精品国产精品国自产国产在线精品一区二区不卡精品国产一区二区三区A V蜜桃人体艺术写真国产精品水蜜桃精品无码久久久久久国产三级精品三级在专区精品国产自在现偷国产精品一区二区三区国产日韩精品欧美一区喷水亚洲精品国产精品国自产国产在线精品一区二区不卡国产中文字幕在线观看国产性一乱一性一伧国产日产欧产美又大又黄欧美人妖