winform和wpf如何实现鼠标穿透的效果

先看一下鼠标穿透的效果:

可以看到Form1这个程序虽然遮在了桌面的上面,但是我们还可以在窗体上点击桌面上的必应词典和网易邮箱大师,好像这个叫“Form1”的窗口被“穿透”一样。

winform版本:

1、设置TransparencyKey=BackColor=control颜色,鼠标会穿透窗体

this.painel.BackColor = System.Drawing.SystemColors.Control;   //这里的Painel是一个System.Windows.Forms.Panel的实例,表示一个面板。

this.TransparencyKey = System.Drawing.SystemColors.Control;  //查了一下这个颜色的含义,msdn上写的是“三维元素的表面颜色”。。。 什么意思?就当做是透明色吧
2、设置TransparencyKey=BackColor=红色、蓝色等其它颜色,在win7下测试鼠标不会穿透窗体,但是在XP下鼠标还是会穿透窗体
3、我用SetLayeredWindowAttributes这个API设置透明,什么系统下鼠标都会穿透窗体

wpf版本:

IsHitTestVisible:声明此元素是否可以作为其呈现内容的某部分的命中测试结果返回。

时间: 2024-10-10 20:45:52

winform和wpf如何实现鼠标穿透的效果的相关文章

如何去掉WinForm或者WPF的最大化和最小化按钮

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何去掉WinForm或者WPF的最大化和最小化按钮.

WinForm 与WPF 窗体之间的想到调用

先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyle.Fill; this.panelStation.Controls.Add(el); ucStationMess_WPF stat = new ucStationMess_WPF(); el.Child = stat; 其中,panelStation 为winform 的窗口控件 ucStatio

[实例]鼠标穿透窗口 & 窗口渐变透明 By 小鸟喳喳叫

理论讲解请点击这里查看 ==> 传送门 注:本教程需要原料 Photoshop(我用的是CS6) 第一步:创建一个窗口(实现鼠标穿透) WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style            = CS_HREDRAW | CS_VREDRAW;    wcex.lpfnWndProc    = WndProc;    wcex.cbClsExtra        = 0;    wcex.cbWndExtr

linux下鼠标穿透和取消穿透--linux小白,大神无视

最近在用qt写一个跨平台的软件,因为设置了无边框,并且我自己给程序窗口加了阴影,阴影范围又比较大 所以必须给阴影区域加上鼠标穿透才能有更好的体验. 上网查了一下,在windows下使用SetWindowLong就行 在linux下的搜了好久也找到了一个方法 就是XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0,0, NULL, 0, ShapeSet, YXBanded);(需要#include <X11/ex

qt 窗口鼠标穿透

Qt 不规则窗体 – 鼠标点击穿透 qt实现鼠标穿透,如果要被穿透窗口只有一层,也即没有嵌套窗口,直接只用对子窗口使用setAttribute (Qt::WA_TransparentForMouseEvents,true);就ok,意味着鼠标事件让父窗口响应. 如果要穿透的窗口含有嵌套窗口,那么接着往下看 快速使用 /////////////////////////////////////////////////////////////// #ifdef Q_OS_LINUX  XShapeCo

基于Winform、WPF等的客户端文件下载

有时候,我们用C#写一些客户端应用程序需要从服务器下载一些资源,如图片.dll.配置文件等.下面就来说一下,在Winform及WPF中如何下载文件. 我们的资源大多放在自己的网站上,或者从其他网站下载资源,我们需要给客户端一个URL,先给出代码: /// <summary> /// 下载文件 /// </summary> /// <param name="URL">下载文件地址</param> /// <param name=&qu

C#窗体设计------鼠标穿透窗体

技巧解析:主要用到了两个系统API函数 SetWindowLong和GetWindowLong 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9

在Winform或WPF中System.Diagnostics.Process.Start的妙用

我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案是使用System.Diagnostics.Process.Start().它的作用是调用外部的命令. 先来看看它的调用方法:Process.Start () Process.Start (ProcessStartInfo) Process.Start (String)Process.Start (Strin

鼠标穿透 有形无影

Public Class Form1 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer) As Integer Private Declare Function SetWindowLong Lib "user32" Alias "SetWind