社区
Delphi
帖子详情
会者不难,关于InvalidateRect。
miky
2004-03-31 07:09:48
用了InvalidateRect(Handle,@R)后,WM_PAINT的内容就被限制在R里了,可我不希望被限制在R里,想画出外面去,有没有办法?
...全文
209
12
打赏
收藏
会者不难,关于InvalidateRect。
用了InvalidateRect(Handle,@R)后,WM_PAINT的内容就被限制在R里了,可我不希望被限制在R里,想画出外面去,有没有办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 就會刷新全部了
PT80-NEAT开发指南v1.1
第一章 关于本手册........................................................................................................................................ 1 简介 ..........................................
SetWindowRgn函数的应用——绘制个性化形状的窗口
这个不难,可以调用CreateEllipticRgn、CreatePolygonRgn等相关创建RGN的函数 关键是第三个参数bRedraw,它有点儿学问,我们先暂时放一下,待会儿细究…… 今天写的程序,实现的功能为: 通过鼠标点击的...
MFC主要知识点
MoveWindow()也能改变窗口大小,按比例改变,(在OnInitDialog())当窗口移到左上角为(0,0)时,移动会失败,就在自己原地方,但大小按比例变化,这个问题不仅是MFC窗口,其它的标准窗口程序也一样, 应该是windows...
(1)第四张--输出文字:绘图程序的组织
绘图程序的组织在处理完滚动条消息后,SYSMETS2不更新显示区域,相反,它呼叫
Invalid
a
teRe
ct
使显示区域失效。这导致Windows将一个WM_PAINT消息放入消息队列中。最好能使Windows程序在响应WM_PAINT消息时完成所有的...
C/C++程序员面试题
一些很简单的概念题,不知道怎么作答,看来要多多巩固下理论知识啦!!!!!!以下转:我从事技术工作,这几年的面试与被面试总结先说我去被面试的经验吧。回答清楚了2个问题,就能顺利过关了。1。为什么要离开上...
Delphi
5,390
社区成员
262,735
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章