C# winform鼠标移动到窗口给窗口加边框并获得句柄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform鼠标移动到窗口给窗口加边框并获得句柄相关的知识,希望对你有一定的参考价值。

我想要一个功能,窗体上有一个图片。鼠标左键按下拖动这个图片的时候。鼠标样式变成该图片的样式,鼠标划过的窗口都会像QQ截图那样加上一个边框。移出这个窗口的时候边框取消。在某个窗口上面松开鼠标左键后获取这个窗口的句柄。
如果有会给鼠标经过的窗口加框的也行

你这个类似于实现SPY++的功能,SPY++是拖动到窗口会加边框,并显示句柄;给你个SPY++的源代码你参考,把拖动改为鼠标经过应相信你可以搞定;
SPY++的C#源代码:
http://download.csdn.net/detail/xtfnpgy/5862401
参考技术A 使用
WindowFromPoint

ChildWindowFromPointEx
来获取。追问

获取句柄我会。但是怎么加边框呢

追答

使用GetWindowDC来获取所操作窗口的DC,然后使用这个DC绘图。

C#在winform上画一张大于全屏的图片(至少3000*3000像素)。在窗口最大化下用鼠标拖动图片,必须画面流畅。

使用PictureBox的滚动条的方案(包括DX)就不要说了。
我现在已经不知道C#能不能实现上面的要求了,现在的关键麻烦在于移动图片时,都能看到绘制的过程(就像波浪一样),不流畅啊!(双缓冲不顶用)。
哪位高手有能实现上面要求的代码不(最好是能看到效果的)?
如果你没C#的代码,给我C++(我刚学,自己写还不熟练,看得话完全没问题)的也行。
再次声明一下,不一定只用鼠标拖的哈,我主要是想要在全屏下实现移动图片时必须流畅这个效果的代码。(图片,全屏,移动,流畅)
哪怕你没代码,知道哪有用C#的写的能实现这个效果的程序也行,告诉我,我去下来看看。

你希望能够全屏拖动一个巨大的背景图,还要保证重绘时不要撕裂画面。
这显然通过简单Winform编程不可行,因为Winform底层是GDI,不可能有多高的图形效率。
你的要求只能通过DirectX或者OpenGL解决。这样的话具体代码就不好写了,目前只能说这些。
参考技术A 用WPF能够解决这个问题,应该会吧,和Winform差别不大,关键是图形的处理比较好,别说图片了,3D的界面都很流畅的 参考技术B DirectX 你可以试试用WPF建一个程序来实现,基于DirectX的,效果罡罡的,我也初学,如果有误,别见笑。

以上是关于C# winform鼠标移动到窗口给窗口加边框并获得句柄的主要内容,如果未能解决你的问题,请参考以下文章

C#中去掉winform边框如何拖动

C# winform怎么样把窗口设置成两边和下面无边框,求沟通。。。

c# WINFORM窗体如何设置才可以不能随意拖动大小

C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件

winform中.当鼠标移到一个图片上怎样能使图片放大??

C#中,当鼠标移动到按钮上时,按钮边框闪烁,鼠标移开时恢复正常,急急急