以 C# 形式创建 Windows 10 透明度效果

2023-12-21

如何创建在 Windows 10 中看到的透明效果?像这样的事情:

我不知道如何在 C# 中解决这个问题。从逻辑上讲,每次表单进入焦点时我都会拍摄桌面快照。然后对其进行模糊处理并将其放置在 0, 0(屏幕到客户端坐标)处。这似乎不太有效。有什么帮助吗?再次。不是经验丰富的 C# 程序员,所以详细的解释将不胜感激

编辑:我看到一些答案将我引向阿尔法混合页面。这不是我要找的。我想知道如何创建您在图像中看到的模糊效果,其余的我可以按照自己的节奏弄清楚


尽管所有评论和答案都说这对于 WinForms 是不可能的,但它绝对也适用于 WinForms(如SetWindowCompositionAttribute可以在 Win32 窗口句柄上调用):

internal enum AccentState
{
    ACCENT_DISABLED = 0,
    ACCENT_ENABLE_GRADIENT = 1,
    ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
    ACCENT_ENABLE_BLURBEHIND = 3,
    ACCENT_INVALID_STATE = 4
}

internal enum WindowCompositionAttribute
{
    WCA_ACCENT_POLICY = 19
}

[StructLayout(LayoutKind.Sequential)]
internal struct AccentPolicy
{
    public AccentState AccentState;
    public int AccentFlags;
    public int GradientColor;
    public int AnimationId;
}

[StructLayout(LayoutKind.Sequential)]
internal struct WindowCompositionAttributeData
{
    public WindowCompositionAttribute Attribute;
    public IntPtr Data;
    public int SizeOfData;
}

internal static class User32
{
    [DllImport("user32.dll")]
    internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data);
}

然后在您的 Form 构造函数中:

public Form1()
{
    InitializeComponent();
    BackColor = Color.Black; // looks really bad with the default back color

    var accent = new AccentPolicy { AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND };

    var accentStructSize = Marshal.SizeOf(accent);

    var accentPtr = Marshal.AllocHGlobal(accentStructSize);
    Marshal.StructureToPtr(accent, accentPtr, false);

    var data = new WindowCompositionAttributeData
    {
        Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY,
        SizeOfData = accentStructSize,
        Data = accentPtr
    }

    User32.SetWindowCompositionAttribute(Handle, ref data);
    Marshal.FreeHGlobal(accentPtr);
}

Result:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 C# 形式创建 Windows 10 透明度效果 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 一个 Hive 脚本可以从另一个 Hive 脚本运行吗?

    我创建了两个配置单元脚本 script1 hql 和 script2 hql 是否可以从 script1 hql 运行脚本 script2 hql 我读到了有关使用 source 命令的信息 但无法回避它的使用 任何指针 参考文档将不胜感激
  • 如何使用“Entity Framework Core”(又名 EF7)实现“软删除”?

    我正在尝试使用 EF7 实现 软删除 我的Item表有一个名为IsDeleted类型的bit 我在 SO 和其他地方看到的所有例子都使用这样的东西 protected override void OnModelCreating ModelB
  • PHPExcel 获取相对于给定列的列名

    使用 PHPExcel 是否可以获取位于左侧或右侧 X 列的列的名称 例如 给定列 BZ 我想返回列名称 CB 或 BX 向右或向左 2 个 Thanks PHPExcel 中已经内置了一些函数来帮助您执行此操作 adjustment 2
  • 进行多线程 foreach 循环的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个带有 foreach 的发送电子邮件方法 如下所示 static void Main string args foreach
  • 创建一个可供 Android 中所有 Activity 访问的对象

    我正在尝试创建一个包含对象的数据数组列表 例如地址和属性列表 非常复杂 并且想知道 如何使所有活动都可以访问 和可编辑 一个对象 而不仅仅是它本身实例化于 基本上是这样的 在活动 1 中创建数组 在活动 2 和活动 3 中访问相同的数组 P
  • 以编程方式打开组合框下拉列表[重复]

    这个问题在这里已经有答案了 是否有可能directly以编程方式打开 WindowsForms 组合框 还没有找到这样做的方法或属性 如果没有 有哪些可能的解决方案不涉及大量黑客攻击 Use ComboBox DroppedDown htt
  • Unix/Linux 系统调用是 POSIX 库函数的一部分吗?

    Unix Linux 系统调用全部或大部分是 POSIX 中的吗 许多Linux Unix编程书籍都说POSIX库函数可能是OS系统调用的包装器 也可能不是 例如 http www makelinux net books lkd2 ch05
  • jquery获取矩形宽度和高度传单

    我有一张地图和一个区域选择字段 initialize map var map L map map setView 38 0 2 L tileLayer http s tile cloudmade com 70146506bc514228ad
  • 使用 Python BaseHTTPServer 处理同时/异步请求

    我通过创建一个继承自 HTTPServer 和 ThreadingMixIn 的类来设置一个线程 使用 Python 线程 HTTP 服务器 class ThreadedHTTPServer ThreadingMixIn HTTPServe
  • 获取 Git 分支大小

    我正在尝试跟踪我正在进行的项目的规模 有没有一种简单的方法来获取不同分支的磁盘上的存储库大小 I tried git count objects v 但它为每个分支提供相同的存储库大小 With Git 2 31 Q1 2021 git r
  • 你使用ant的任务吗?

    The ant 任务的文档 http ant apache org manual Tasks depend html states 依赖任务的性能为 取决于许多因素 例如 作为类关系的复杂性和 有多少类文件已过期 关于是否是的决定 重新编译
  • 通过 jQuery 附加 HTML 字符串

    我想使用 jQuery 附加生成以下 HTML 字符串 手动编写代码对我来说看起来太麻烦了 div div
  • Eclipse:Spring bean 和上下文的开放声明/资源

    在观看我的一位同事使用 IntelliJ 工作时 我很嫉妒地注意到他可以在 Java 注释或 Spring 上下文文件中按住 Ctrl Command Click 的 Spring bean 上下文或资源的名称 并且 IntelliJ 将打
  • 在 matplotlib 中使用标量可映射的颜色编码

    is a subplot I created using matplotlib Is it possible to code the colors on the basis of a pre defined range I want to
  • 子进程和父进程ID

    只是与子进程块中的父 pid 值混淆了 我的程序如下 int main int argc char argv pid t pid pid fork if pid 1 perror fork failure exit EXIT FAILURE
  • 如何解决 npm 安装错误“npm ERR!代码1”

    我正在尝试安装Gulp js https en wikipedia org wiki Gulp js当我写的时候npm install我得到这个问题 npm ERR code 1 npm ERR path D www wegrow node
  • 在c中执行汇编代码

    我想知道是否有办法调用 c汇编代码 我想将此代码放入我的 c 文件中 我想在 c 文件中执行的汇编代码以返回地址 1 mov eax 0x2d 2 mov ebx 0 3 int 0x80 我知道答案是放eax 这是 c 文件的一部分 1
  • 如何使用 win32com 退出 Excel,而不保存?

    当我执行xl Quit 时 Excel总是弹出提示询问我是否要保存 如何告诉它我不想保存 xl Dispatch Excel Application xl Workbooks Open New Workbook xlsx do some s
  • 使用属性文件的 log4j 的多个过滤器

    我正在尝试使用此配置过滤日志消息 我假装忽略包含文本的消息Could not refresh JMS Connection for destination以及那些包含org apache activemq transport failove
  • 以 C# 形式创建 Windows 10 透明度效果

    如何创建在 Windows 10 中看到的透明效果 像这样的事情 我不知道如何在 C 中解决这个问题 从逻辑上讲 每次表单进入焦点时我都会拍摄桌面快照 然后对其进行模糊处理并将其放置在 0 0 屏幕到客户端坐标 处 这似乎不太有效 有什么帮