DrawGrid得刷新问题,高手请进(50分)

  • 主题发起人 主题发起人 0532qd
  • 开始时间 开始时间
0

0532qd

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个512列,48行的DrawGrid,Tag[0..511,0..47]为每个点的数组,值为0为黑色
1为红色,程序一运行就死机,我认为刷新时有问题,它的ondrawcell我是这样写的
var
i,j:integer;
begin
for i:=0 to 47 do
for j:=0 to 511 do
case Tag[j,i] of
1:begin
DrawGrid1.Canvas.Pen:=clBlack;
DrawGrid1.Canvas.Brush:=clBlack;
DrawGrid1.Canvas.Ellipse(acol*6,arow*6,(acol+1)*6,(arow+1)*6);
end;
0:begin
DrawGrid1.Canvas.Pen:=clBlack;
DrawGrid1.Canvas.Brush:=clBlack;
end;
end;
有哪位高手能帮我解决这个问题?谢谢了!
 
呵呵,这还能不死?事件里已经给你行列了你直接用不就行了,还用了两个FOR。
你知道DRAWCELL要执行多少次吗?
 
menxin说的有道理
 
可是这样呀,我做的DrawGrid非常长,有一半再屏幕之外看不到,当我把点阵画到
上面去后,我用水平拖动条到屏幕之外那部分看时,却是看不到的呀,被刷掉了,
怎么办?
 
换个Grid吧!用Aligrid,反正我是摆不平Grid.ondrawcell,跟踪都是件麻烦事。
 
我还是要用这个DrawGrid,怎么做呢?请高手指教
 
???
这问题还没解决?把I,J换成acol,arow啊

...
case Tag[ACol,ARow] of
1:begin
DrawGrid1.Canvas.Pen.color:=clBlack;
DrawGrid1.Canvas.Brush.Color:=clBlack;
// DrawGrid1.Canvas.Ellipse(Rect);
DrawGrid1.Canvas.Ellipse(acol*6,arow*6,(acol+1)*6,(arow+1)*6);
end;
0:begin
DrawGrid1.Canvas.Pen.color:=clBlack;
DrawGrid1.Canvas.Brush.color:=clBlack;
end;
....
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
548
import
I
I
回复
0
查看
612
import
I
后退
顶部