再问TImage 和 TScrollbox |
尚未結案
|
mchakuna
一般會員 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
我在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 發送簡訊給我 |
mchakuna 您好: 我使用的是 BCB4,不知道我的經驗是否也能適用於您的環境?針對第一個問題,我建議您將 ScrollBox 與其底層元件的 DoubleBuffered 都設為 TRUE,看看能否改善閃爍的問題? 另外有關 PaintBox 的問題,您必須要將繪製的動作放在 OnPaint 事件中,您可以先建立一個 Bitmap 物件,將要繪製的內容都畫在 Bitmap 上面 (例如您所寫道的網格),然後在 PaintBox 的 OnPaint 事件中透過 Draw 函式將前述的 Bitmap 物件繪製到 PaintBox 上面。 7 天天敲鍵盤 v 時時按滑鼠 8
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |