Y
YuZi
Unregistered / Unconfirmed
GUEST, unregistred user!
现在我用下面的方法更新窗口,
SetWindowPos(Handle, 0, 0, 0, Width, Height+1, SWP_NOMOVE);
SetWindowPos(Handle, 0, 0, 0, Width, Height-1, SWP_NOMOVE);
比用InvalidateRect()、RedrawWindow和Invalidate等方法闪烁情况好一些。我是通过用SetWindowPos调整大小来达到间接刷新窗口的目的,但SetWindowPos只有在调整后的大小跟原来不一样才会刷新窗口,所以用了两行代码,有什么办法不用改变大小也能刷新窗口吗?
如果能解决这个微小的闪烁问题,那也就达到了QQ的效果了。
=================================================================
如何实现QQ屏幕截图功能中的“区域选取”功能,注意我的问题不是问如何截图,而是问如何实现那种“区域选取”的效果,即如何实现选取区域周围有8个黑色小方块,并且可以通过它们实时调整区域大小,可以移动区域矩形。请不要贴TStretchHandle、TSizeControl之类控件的代码,用这些控件+TImage实现的效果太差了,我要的不仅仅是运行期改变控件大小的效果。
我也曾想用Image直接实现,但Image没有句柄无法利用WM_NCHITTEST消息改变大小,后来继承TwinControl+WS_EX_TRANSPARENT写了一个,效果已经很接近QQ了,但移动时背景却无法透明更新。。。
SetWindowPos(Handle, 0, 0, 0, Width, Height+1, SWP_NOMOVE);
SetWindowPos(Handle, 0, 0, 0, Width, Height-1, SWP_NOMOVE);
比用InvalidateRect()、RedrawWindow和Invalidate等方法闪烁情况好一些。我是通过用SetWindowPos调整大小来达到间接刷新窗口的目的,但SetWindowPos只有在调整后的大小跟原来不一样才会刷新窗口,所以用了两行代码,有什么办法不用改变大小也能刷新窗口吗?
如果能解决这个微小的闪烁问题,那也就达到了QQ的效果了。
=================================================================
如何实现QQ屏幕截图功能中的“区域选取”功能,注意我的问题不是问如何截图,而是问如何实现那种“区域选取”的效果,即如何实现选取区域周围有8个黑色小方块,并且可以通过它们实时调整区域大小,可以移动区域矩形。请不要贴TStretchHandle、TSizeControl之类控件的代码,用这些控件+TImage实现的效果太差了,我要的不仅仅是运行期改变控件大小的效果。
我也曾想用Image直接实现,但Image没有句柄无法利用WM_NCHITTEST消息改变大小,后来继承TwinControl+WS_EX_TRANSPARENT写了一个,效果已经很接近QQ了,但移动时背景却无法透明更新。。。