会者不难,关于InvalidateRect。

miky 2004-03-31 07:09:48
用了InvalidateRect(Handle,@R)后,WM_PAINT的内容就被限制在R里了,可我不希望被限制在R里,想画出外面去,有没有办法?
...全文
209 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
数字蛋糕 2004-05-11
  • 打赏
  • 举报
回复
试试下面的代码:

var
rgn : HRGN;
begin
rgn := SelectObject(Handle, 0);
DeleteObejct(rgn);

//下面该做什么做什么……
end;
miky 2004-04-09
  • 打赏
  • 举报
回复
顶一顶,顺便问一下,Delphi中的beginpaint和endpaint在哪调用的?Vcl把他藏得太死了,我没找到。
miky 2004-04-05
  • 打赏
  • 举报
回复

to :楼上
>>都说了是在DrawCell事件中画了
有了事件,还说你不知道什么时候回调用??????

如果你在DrawCell中再InvalidateRect一次,会形成死循环,不到2秒,堆栈就溢出了。

TstringGrid在很多地方都调用Windows.InvalidateRect(handle, @R, true);
由于DrawCell是在Paint中调用的,而InvalidateRect会强制调用Paint重画,TstringGrid在很多地方都调用Windows.InvalidateRect(handle, @R, true);因用户的不同操作而随时有可能调用。因此我无法确定什么时候会调用。也就是不清楚在何时会发生DrawCell事件。

在Paint中绘画会受到InvalidateRect的限制,绘制无法超出R的范围。而我正是想画出去。当然可以把所有的InvalidateRect的R换成nil,但每次全部重画,好象有点对不起电脑,也对不起眼睛。虽然在Paint外可以不受R的限制,但这样就要手工来调用DrawCell,而我真不什么时候该调用,因为有很多情况都需调用(包括WM_PAINT)。并且不知道如何取得DrawCell中的绘制区域。

如果要修改每个R的范围,有5000多行代码,不太好改。和新做一个区别不大了。

所以我才提出了这个问题,想越过InvalidateRect的限制,充分自由的发挥。

不知道我这样说你明白了没有?


aiirii 2004-04-04
  • 打赏
  • 举报
回复
你的代码,或者你的思路有问题, 我觉得是很简单的阿!!!

>>都说了是在DrawCell事件中画了
有了事件,还说你不知道什么时候回调用??????
teapot 2004-04-03
  • 打赏
  • 举报
回复
很容易.你自己画.
miky 2004-04-03
  • 打赏
  • 举报
回复
看来是没人知道的了。
我查了很多资料,都没找到。只好当不可能了。
miky 2004-04-01
  • 打赏
  • 举报
回复
顶,要是没可能的话请说一声。
海风2017 2004-03-31
  • 打赏
  • 举报
回复
楼上几位老兄说得都对,
用InvalidateRect(canvas.handle,R,B),只要B设为True就会刷新整个背景,否则不会
miky 2004-03-31
  • 打赏
  • 举报
回复
都说了是在DrawCell事件中画了,我要知道什么时候调用DrawCell才行啊。而且我还要通过DrawCell取得Rect,才好放大啊。要是用Invalidate刷新全部的话会闪的。

其实我就是想合并单元格,但是无法正确刷新,经常有部分内容不能覆盖掉,乱七八糟很难看。

aiirii 2004-03-31
  • 打赏
  • 举报
回复
那你可以自己再 InvalidateRect 一次阿!!
在你的代码中

XXXControl.InvalidateRect;
也可以阿
miky 2004-03-31
  • 打赏
  • 举报
回复
坏就坏在我不能设,我是继承来的控件,要改动的话很困难!

其实就是StringGrid的DrawCell事件,我想把格子画大点。
aiirii 2004-03-31
  • 打赏
  • 举报
回复
Windows.InvalidateRect(handle, nil, true);

設為 nil 就會刷新全部了

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧