图象闪烁很厉害!!!(50分)

  • 主题发起人 主题发起人 fsm
  • 开始时间 开始时间
F

fsm

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个Image(设为Image1)后面,再放一个Image(设为Image2)用于画网格,
Image1设为透明。然后在Image1上用自己的算法画图形(如直线),发现画点
的过程中Image1闪烁得很厉害!

希望各位大虾指点!

 
那么image2在这里面是干什么的? 好像没用到?
网格为什么不直接画到同一个image上?
 
对,用一个image或paintbox画不行吗?
 
画线前保存屏幕上的图象, 保存image1的内容. 将image1的内容替换成背景
图象(即image1和image2叠加之后的效果), 设置image1.transparent := false;
然后在image1上画线, 同时在保存的原始的image1中画相同的线. 这样
不会闪烁.
如果你不是为了保存修改之后的image1(包括你画的线但不包括网格), 那
image2根本不需要, 直接将网格画到image1上即可.
 
直接到Image1的Canvas上去画.
 
因为Image1上的图像还要放大的。如果把网格也画在Image1上那么当Image1放大后
不就把网格线也放大了吗?
 
呵呵, 他一定是要网格在图片上的效果:-)
不过可以把image2.visible:=false;
然后image1画线, 然后image2.visible:=true;
这样试试.
 
在同一个image上,网格用xor的方式划线,放大前xor掉网格,然后放大图形,然后xor出来网格.
 
其实我是要做到在画线的过程中看到每个象素点的位置(一定要用网格分开)
就象Delphi里的Image Editor那样。当图象放大了就看到网格,并且在作图过程
中清楚的看到每个点(象素或者说是网格)的作图情况。
 
我自己找到答案了,就是用一个IMAGE做副本,先在副本上画画,然后把它copyrect
到用于显示的IMAGE上,最后在显示的IMAGE上画网格就可以了!
 
我要收回一些分
 
说吧,你要怎么分.
 
Another_eYes 10分 其于的5分
 
多人接受答案了。
 
何不用DirectDraw的双缓冲技术?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部