全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1511
推到 Plurk!
推到 Facebook!

請問如何讓一張圖有向吃角子老角的特效?

缺席
waertf
一般會員


發表:1
回覆:1
積分:0
註冊:2009-01-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-27 08:34:11 IP:114.42.xxx.xxx 訂閱
目前是將兩張圖合併成一張width*2的圖
圖片是存在TBitmap *source3中
可是最多只能移到width*2的長度
請問是否可以依給定次數重覆平移輪播
另外以下程式碼是否可以改成讓他有平移的感覺
因為用sleep好像只有第一張圖停比較久
但copyrect的變動太快了沒有平移的效果
[code cpp]
for(int i=0;i{
Image3->Canvas->CopyRect(Rect(0,0,source1->Width,source1->Height),source3->Canvas,Rect(i,0,(source1->Width) i,source1->Height));
Form1->Canvas->Draw(16,304,source1);
Sleep(10);
}

[/code]
另外參考別人用 bcb 1.0作的 code也看不出所以然
水果機sample code
編輯記錄
waertf 重新編輯於 2009-05-27 08:36:34, 註解 無‧
waertf 重新編輯於 2009-05-27 08:53:36, 註解 無‧
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-27 08:58:04 IP:203.79.xxx.xxx 訂閱
請試看看在中間加入 refresh ,因為你圖形複製完後沒有refresh,只停個 10ms ,畫面應該不會有反應就開始繼續做下一個動作了。


===================引 用 waertf 文 章===================
目前是將兩張圖合併成一張width*2的圖
圖片是存在TBitmap *source3中
可是最多只能移到width*2的長度
請問是否可以依給定次數重覆平移輪播
另外以下程式碼是否可以改成讓他有平移的感覺
因為用sleep好像只有第一張圖停比較久
但copyrect的變動太快了沒有平移的效果
[code cpp]
for(int i=0;i{
Image3->Canvas->CopyRect(Rect(0,0,source1->Width,source1->Height),source3->Canvas,Rect(i,0,(source1->Width) i,source1->Height));
Form1->Canvas->Draw(16,304,source1);
Sleep(10);
}

[/code]
另外參考別人用 bcb 1.0作的 code也看不出所以然
水果機sample code
waertf
一般會員


發表:1
回覆:1
積分:0
註冊:2009-01-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-27 14:52:04 IP:220.136.xxx.xxx 訂閱
refresh()會造成閃爍
後來偶找到用
Delay(time)
[code cpp]
void Delay(int lMilliSeconds){
int lStart;
lStart = GetTickCount();
do{
Application->ProcessMessages();
}while (GetTickCount() - lStart <= lMilliSeconds);
}

[/code]
然後再用for loop,在loop裡不斷的用CopyRect畫

另外加上Form->DoubleBuffered=true;
就可以有動畫的效果了
編輯記錄
waertf 重新編輯於 2009-05-27 14:52:39, 註解 無‧
waertf 重新編輯於 2009-05-27 14:53:20, 註解 無‧
系統時間:2017-12-11 19:22:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!