亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

在C++ Builder中實現動畫

2019-09-06 23:33:54
字體:
來源:轉載
供稿:網友

                      一、 直 接 使 用Animate 部 件
----在 您 的 程 序 中 只 要 增 加 一 個Animate 部 件, 并 設 置 其 部 分 屬 性 就 可 實 現 動 畫, 但 缺 點 就 在 于Animate 部 件 只 能 打 開 已 有 的AVI 視 屏 文 件( 或 使 用Windows 公 用AVI), 有 一 定 的 系 統 開 銷。

----在 板2(Panel2) 中 加 入 一 個Animate 部 件 (Animate1), 我 們 設 置 其FileName 或CommonAVI 及Active 屬 性 以 使 其 執 行 某AVI 視 屏 文 件 或Windows 公 用AVI。 設 置Animate1 的CommonAVI 屬 性 值 為aviFindFolder, 它 將 執 行 我 們 常 見 的 在 搜 索 文 件 夾 過 程 中 的 搜 索 動 畫。

----為 控 制Animate1 的 動 作, 為 第 一 個 復 選 框 (CheckBox1) 的OnClick 事 件 增 加 代 碼 如 下:

void __fastcall TDemoForm::
CheckBox1Click(TObject *Sender)
{
Animate1 ->Active = CheckBox1 ->Checked;
}

二、 使 用Timer 部 件 定 時 繪 制 畫 面
----在C + +Builder 的System 標 簽 中 有 一 個Timer 部 件, 使 用Timer 部 件 實 際 上 是 使 用Windows 定 時 器, 定 時 繪 制 部 分 畫 面, 達 到 動 畫 效 果。

----準 備 幾 張 連 續 的Bmp 圖 片, 如 下 所 示:



----Pic0.bmp Pic1.bmp Pic2.bmp Pic3.bmp 在 板3(Panel3) 中 加 入Image 部 件(Image1), 并 預 裝 入 一 幅 圖 片( 如: Pic3.bmp)。

----為 在 程 序 中 存 儲 這 些 圖 片, 在 主 窗 體 的 頭 文 件 中 增 加 變 量 定 義:

TPicture *pic[4]; // 存 儲 圖 片 的 指 針
int number; // 記 錄 當 前 圖 片 序 號

----并 為 主 窗 口 的OnCreate 事 件 增 加 代 碼, 在 程 序 主 窗 口 創 建 時 裝 入 圖 片, 即:

void __fastcall TDemoForm::FormCreate(TObject *Sender)
{
number = 0;
AnsiString Path = ExtractFilePath(Application ->ExeName);
for(int i=0; i<4; i + +) { pic="new" TPicture(); try { pic ->LoadFromFile(Path +
“pic" +IntToStr(i) +“.bmp");
}
catch(...) {
Application ->MessageBox
(“ 無 法 打 開 圖 片 文 件...",
“ 錯 誤", MB_ICONWARNING|MB_OK);
} }
}

----增 加Timer 部 件(Timer1), 設 置 其 時 間 間 隔 Interval 屬 性 為200 毫 秒; 另 外, 設 置Timer1 的Enabled 屬 性 值 為false。 為 定 時 更 換 繪 制 圖 片, 為Timer1 的OnTimer 事 件 增 加 代 碼 如 下:

void __fastcall TDemoForm::
Timer1Timer(TObject *Sender)
{
Image1 ->Canvas ->CopyRect
(Image1 ->ClientRect,
   pic[number] ->Bitmap ->Canvas,
   Rect(0, 0, pic[number] ->Width,
pic[number] ->Height));
number + +;
number %=4;
}

----為 第 二 個 復 選 框(CheckBox2) 的OnClick 事 件 增 加 代 碼 如 下, 以 控 制 動 畫 的 執 行 與 停 止:

void __fastcall TDemoForm::CheckBox2Click
(TObject *Sender)
{
Timer1 ->Enabled = CheckBox2 ->Checked;
}

----使 用Timer 部 件, 定 時 繪 制 畫 面 也 并 不 復 雜, 但 因 為 要 存 儲 多 幅 圖 片, 系 統 開 銷 卻 是 相 當 大 的, 但 其 動 畫 效 果 卻 也 相 當 好。

三、 利 用 程 序 空 閑 時 間 更 換/ 重 繪 畫 面
----OnIdle 事 件 是TApplication 類 的 事 件 之 一。 當 應 用 程 序 空 閑 時, 程 序 就 會 產 生OnIdle 事 件, 利 用 程 序 空 閑 執 行 動 畫 不 是 很 妙 嗎 ?

----首 先 在 演 示 程 序 主 窗 體 的 第 四 個 板 (Panel4) 上 增 加 一 個 標 簽(Lable1), 根 據 你 的 個 人 愛 好 設 置 其 Caption 及Font 等 屬 性。 再 在 主 窗 體 的 類 定 義 中 增 加 一 個OnIdle 事 件 處 理 函 數, 它 像 普 通 函 數 一 樣 定 義, 但 需 保 證 其 原 型 正 確。 我 們 定 義 的OnIdle 事 件 處 理 函 數 在 主 窗 體 的 頭 文 件 中 作 如 下 申 明:

----void __fastcall MyIdleHandler(TObject *Sender, bool & Done);

----其 完 整 代 碼 為:

void __fastcall TDemoForm::MyIdleHandler
(TObject *Sender, bool &Done)
{
int StartTime = GetTickCount();
if(Label1 ->Top +Label1 ->Height>0) {
Label1 ->Top - -;
}
else {
Label1 ->Top = Panel4 ->Height;
}
while(GetTickCount() -StartTime <50); }

----請 注 意, 為 避 免 移 動 標 簽 速 度 過
快, 使 用 了 下 面 的 代 碼 段: int StartTime = GetTickCount();
...
while(GetTickCount() -StartTime <50);

----它 保 證 了 動 畫 的 時 間 間 隔 不 少 于50 毫 秒。

----為 第 三 個 復 選 框(CheckBox3) 的OnClick 事 件 增 加 代 碼 如 下:

void __fastcall TDemoForm::CheckBox3Click
(TObject *Sender)
{
if(CheckBox3 ->Checked) {
Application ->OnIdle = MyIdleHandler;
}
else {
Application ->OnIdle = NULL;
}
}

----為 保 證 程 序 執 行 的 安 全 性, 還 需 在 程 序 結 束 時 做 一 些 必 要 的 處 理( 如 釋 放 程 序 運 行 過 程 中 分 配 的 空 間)。 為 主 窗 體 的OnDestroy 事 件 增 加 代 碼 如 下:

void __fastcall TDemoForm::FormDestroy
(TObject *Sender)
{
for(int i=0; i<4; i + +) { delete pic; } Application ->OnIdle = NULL;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.日韩系列| 亚洲欧美日韩精品久久| 久久五月天综合| 最近2019年日本中文免费字幕| 欧美精品久久久久久久久久| 日韩视频在线免费观看| 日韩中文字幕网| 欧美亚洲另类在线| 亚洲欧美制服第一页| 欧美成人精品激情在线观看| 欧美成人在线免费| 精品国产一区二区三区久久狼5月| 日本91av在线播放| 久久久精品在线观看| 亚洲美女av电影| 欧美日韩国产综合视频在线观看中文| 亚洲最大福利网| 亚洲全黄一级网站| 在线看日韩av| 久久久久北条麻妃免费看| 伦理中文字幕亚洲| 精品视频久久久| 亚洲国产精品免费| 国产精品麻豆va在线播放| 欧美高清在线视频观看不卡| 清纯唯美亚洲综合| 亚洲天天在线日亚洲洲精| 欧美日韩999| 久久久久久国产精品三级玉女聊斋| 国产精品久久久久久久久久久久| 精品毛片网大全| 国产日韩精品在线| 国产精品成人aaaaa网站| 热久久这里只有精品| 亚洲va国产va天堂va久久| 国产视频在线观看一区二区| 国产精品在线看| 亚洲娇小xxxx欧美娇小| 日韩福利视频在线观看| 欧美日韩免费区域视频在线观看| 亚洲精品美女在线观看播放| 亚洲欧洲在线免费| 国产精品黄页免费高清在线观看| 91精品国产91久久久久| 欧美在线视频免费| 亚洲欧美激情四射在线日| 中文字幕一区二区三区电影| 亚洲人成电影在线| 久久久久国产精品www| 欧美一区二区三区四区在线| 国产美女搞久久| 欧美极品在线视频| 992tv在线成人免费观看| 亚洲黄色av网站| 最近2019中文免费高清视频观看www99| 亚洲欧美成人在线| 91亚洲精品久久久| 97在线视频一区| 97久久超碰福利国产精品…| 日韩精品999| 国产精品国产三级国产aⅴ9色| 国产精品夜间视频香蕉| 国产精品直播网红| 日韩高清a**址| 欧美激情图片区| 欧美精品一区二区三区国产精品| 欧美xxxx14xxxxx性爽| 国产91成人在在线播放| 亚洲欧美综合精品久久成人| 亚洲精品久久久久久久久久久久| 国产精品入口免费视频一| 一区二区三区久久精品| 亚洲色图日韩av| 国产91精品久| 91亚洲国产成人久久精品网站| 色偷偷88888欧美精品久久久| 懂色av中文一区二区三区天美| 欧美日韩国产一区二区三区| 日韩av网站导航| 欧美日韩成人在线播放| 欧美国产日韩一区二区在线观看| 91精品国产高清| 久久久久国色av免费观看性色| 欧美福利在线观看| 日韩av在线导航| 黑人与娇小精品av专区| 久久久久免费精品国产| 国产精品第二页| 欧美性xxxx极品hd满灌| 夜色77av精品影院| 欧美国产日韩一区| 国产精品99蜜臀久久不卡二区| 成人动漫网站在线观看| 国产日本欧美一区二区三区在线| 91av在线视频观看| 日韩亚洲在线观看| 日韩视频―中文字幕| 91免费国产网站| 国产精品久久久久99| 这里只有精品丝袜| 亚洲а∨天堂久久精品喷水| 日韩在线欧美在线国产在线| 国产精品一区二区三区免费视频| 欧美激情一区二区三级高清视频| 91精品国产91久久| 国产精品久久久久久久久久三级| 亚洲精品xxxx| 粉嫩av一区二区三区免费野| 精品福利一区二区| 色中色综合影院手机版在线观看| 国产91精品视频在线观看| 久久男人av资源网站| 亚洲午夜小视频| 成人激情视频网| 久久久亚洲欧洲日产国码aⅴ| 视频在线一区二区| 日韩精品中文字幕久久臀| 国产精品观看在线亚洲人成网| 久久久久久com| 隔壁老王国产在线精品| 欧美精品在线观看91| 97国产精品免费视频| 狠狠操狠狠色综合网| 亚洲国产精品成人一区二区| 91在线视频成人| 精品国产乱码久久久久酒店| 成人黄色大片在线免费观看| 亚洲一区二区久久久久久| 国产精品香蕉在线观看| 92看片淫黄大片欧美看国产片| 欧美精品一区二区三区国产精品| 精品露脸国产偷人在视频| 精品香蕉一区二区三区| 草民午夜欧美限制a级福利片| 久热99视频在线观看| 国产中文字幕亚洲| 日韩av在线免播放器| 欧美视频免费在线观看| 国产亚洲精品日韩| 国产精国产精品| 91免费精品视频| 国产精品久久久久91| 8090理伦午夜在线电影| 欧美野外wwwxxx| 欧美色道久久88综合亚洲精品| 国产在线视频91| 在线色欧美三级视频| 国产精品视频一区国模私拍| 欧美激情第1页| 成人精品在线观看| 国产亚洲人成a一在线v站| 国产精品久久久久久久久久99| 国产亚洲精品美女久久久| 日韩高清免费观看| 精品人伦一区二区三区蜜桃免费| 国产专区精品视频| 久久99亚洲精品| 日韩第一页在线| 国产成人av在线播放| 亚洲自拍高清视频网站| 日韩亚洲精品视频| 久久躁日日躁aaaaxxxx| 国产日韩在线播放| 狠狠久久五月精品中文字幕|