金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 422|回复: 5

请教为什么刷新然后关闭AutoRedraw再画图没有起到关闭AutoRedraw的效果

[复制链接]

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
发表于 2024-7-3 08:12 | 显示全部楼层 |阅读模式
请教各位大佬,我在Technic的Click事件中写入了一个DrawRect方法,但是我想把前面的已经画的图形删除,于是就用了Technic.Refresh刷新,前面的图形是删除了,但是我点击发现,DrawRect也就闪一下,相当于Technic.AutoRedraw = false没有效果,这个问题怎么解决呢,感觉是一个BUG。谢谢。
[Visual Basic] 复制代码
Sub Technic_Click()
	Set Grid = Technic.GetGridByName("MAIN")
    Technic.Refresh
	Technic.AutoRedraw = false
	call GRID.DrawRect(300, 200, 500, 700, vbcyan, FALSE, 2,0)
	Set Grid = Nothing
End Sub

回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-7-3 09:28 | 显示全部楼层
DrawRect应该在框架的 Paint 事件里编写绘图代码, 否则当窗口重绘后你的绘图会被覆盖掉.
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-7-3 09:49 | 显示全部楼层
技术006 发表于 2024-7-3 09:28
DrawRect应该在框架的 Paint 事件里编写绘图代码, 否则当窗口重绘后你的绘图会被覆盖掉.

是这个道理,但是我如果不在AutoRedraw前加上refresh它就没问题,按道理也对啊,但是我就没有理解,我重绘窗口使用refresh是在设置AutoRedraw为false之前,重绘了才执行后面的代码的,这个就很奇怪了
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-7-3 10:34 | 显示全部楼层
技术006 发表于 2024-7-3 09:28
DrawRect应该在框架的 Paint 事件里编写绘图代码, 否则当窗口重绘后你的绘图会被覆盖掉.

并且从手册描述的来看,我是用了Technic.AutoRedraw = false,当前窗口就应该不会重绘了
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-7-3 11:18 | 显示全部楼层
Refresh方法是异步的,不会等待其刷新完毕后再执行后面的语句。所以会出现你说的现象。

Refresh这类刷新操作应该都在逻辑的尾部触发。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-7-3 11:29 | 显示全部楼层
技术006 发表于 2024-7-3 11:18
Refresh方法是异步的,不会等待其刷新完毕后再执行后面的语句。所以会出现你说的现象。

Refresh这类刷新 ...

明白了, 万分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 03:46 , Processed in 0.268792 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表