VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1015|回复: 4

请问 在image上画矩形框框,怎样才能让image同步刷新(Refresh),而又不让image闪动

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-15 09:00:02 | 显示全部楼层 |阅读模式
随着鼠标的移动,在image上画出一个从起点到终点的矩形框.我在MOUSEDOWN里记录起点,然后在MOUSEMOVE里从起点到鼠标所在位置画矩形,但是发现画了好多层的矩形,我现在只想从起点到鼠标所在位置画一个矩形,并且随着鼠标的移动而变化,这样我在MOUSEMOVE事件里加了句 Refresh(); 进行同步刷新,这样作虽然是擦除了多余的层叠的矩形 可是 image却 由于不停的刷新而 剧烈的闪动。
请问 有2全齐美的办法吗?既让image同步刷新,使其不产生多余的层叠的矩形,又
不让image闪动。我该如何做??谢谢
回复

使用道具 举报

0

主题

16

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-4-14 22:45:01 | 显示全部楼层
不要用刷新,矩形只是简单的图形,完全可以用pmxor重新画一次来擦除原来的图,也就是说你在onmove里面要写对原来矩形的rect用pmxor画一次,擦除,然后在pmcopy(好像是这个,你看看帮助,默认的)画新的坐标就行了,如果设计到复杂的图形,为了简单可以用双缓冲,先在内存画好,然后再显示出来,显示部分直接在onpaint里面调用对应的copyrect之类的函数就可以了
回复

使用道具 举报

1

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-7-11 12:15:01 | 显示全部楼层
image的父容器的doublebufer=true
回复

使用道具 举报

0

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-7-12 11:00:01 | 显示全部楼层
在MouseMove里用DrawFocusRect画矩形,它的作用和xor类似,第一次画出来,第二次画相当于擦除
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-21 00:00:01 | 显示全部楼层
doubleBuffer真的很好用,谢谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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