線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1986
推到 Plurk!
推到 Facebook!

再问TImage 和 TScrollbox

尚未結案
mchakuna
一般會員


發表:41
回覆:45
積分:17
註冊:2004-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-05 18:23:10 IP:211.147.xxx.xxx 未訂閱
我在TScrollBox中加入了TImage, 然后在TImage的Canvas中每间隔一个单位画一个小圆点,如此在整个canvas上绘了一个网格,canvas的大小为800x600,小图节单位间隔为10,为此小圆的数目很多。当TScrollBox时,TImage闪烁很利害,我将TScrollBox的doublebuffer设为TRUE,但结果还是一样。实在想不到什么好方法去掉flickering。我想请问当TScrollBox的scrollbar移动时,它都做了些什么?在google上有人说因为它要擦除背景,建议inherit TScrollBox并重写WMEraseBkgnd,我试了,我将它设为不擦除背景,但似乎还是没用。到底它在滚动时要怎样处理TImage? 我想inherit一个TScrollBox来解决这个问题,但该从哪里入手? 另外,我尝试用TPaintBox取代TImage,奇怪的是每次滚动时,超出范围的部分会被擦掉,再次滚回到原来位置时那一部分已成为空白不能再显示原图了,为什么呢?如果调用refresh或repaint,整个canvas都擦掉了??? 先谢各位了 谢谢!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-08 15:30:59 IP:61.217.xxx.xxx 未訂閱
mchakuna 您好:    我使用的是 BCB4,不知道我的經驗是否也能適用於您的環境?針對第一個問題,我建議您將 ScrollBox 與其底層元件的 DoubleBuffered 都設為 TRUE,看看能否改善閃爍的問題?    另外有關 PaintBox 的問題,您必須要將繪製的動作放在 OnPaint 事件中,您可以先建立一個 Bitmap 物件,將要繪製的內容都畫在 Bitmap 上面 (例如您所寫道的網格),然後在 PaintBox 的 OnPaint 事件中透過 Draw 函式將前述的 Bitmap 物件繪製到 PaintBox 上面。      7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-05-19 14:18:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!