对于Canvas中内容的移动是如何实现, (100分)

  • 主题发起人 主题发起人 zlj555
  • 开始时间 开始时间
Z

zlj555

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在是在canvas中画座标,当座标左移时用移动的方法与重画的方法哪个效率更高?
实际上我做的是一个Chart图(和2000下的-->任务管理器-->CPU性能相似的东西),希望
大家根据具体情况予以考虑。

另外有谁知道:
Listview_GetItemCount这个函数是在哪个单元声明的
 
我用的是重画。用两个bitmap,一个在后台画,画完后copy到前台。
 
1、我认为应该在原位置用XOR方法重画一次以擦除原图象,然后在新位置画
2、有这个方法吗??
 
当然是重画
 
我终于看到有人说XOR方法,
我在做时钟时也同样碰到一个问题,
就是要去掉刚走过的一条线,我是选用了重画,就是用底色相同的颜色覆盖掉,
但这个方法想想不太好,但不知道用XOR方法,有那位大侠知道告诉我一声,
真的谢谢了。我的Email是 wuasi2008@yahoo.com.cn.
谢谢谢啦。
 
假如是重画的话,我将保存最少整屏的Y值,每次重画???
 
我是先先申明单元变量,保存坐标,没执行一次time事件时,
先用与底色一样的颜色覆盖掉原来的画
的线,我做的是动态时钟,但不知道xor的方法,有人知道的话那就谢谢了~
 
设置Canvas.Pen.Mode :=pmNotxor;
然后重新绘制一次.能比cavans全部重画的效率高~.
 
总定义一下,point1,point2:tpoint;

ONMOUSEDOW
point1.x:=x;
point1.y:=y;
point2.x:=x;
point2.y:=y;
在ONMOUSEMOVE时
Canvas.Pen.Mode :=pmNotxor;
canvas.rectangle(point1.x,point1.y,point2.x,point2.y);
canvas.rectangle(point1.x,point1.y,x,y);
point2.x:=x;
point2.y:=y;
在ONMOUSEUP时
Canvas.Pen.Mode :=pmcopy;
canvas.rectangle(point1.x,point1.y,point2.x,point2.y);
这样,你试试效果
 
谢谢各位啦。。。。。
我去试试看。。。。。
 
我已经做完了,是不断的重绘,每点的状态信息存在一个临时的队列中,重绘时从队列读值。
 
多人接受答案了。
 

Similar threads

后退
顶部