iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现悬浮窗口的方法详解
  • 611
分享到

C#实现悬浮窗口的方法详解

C#悬浮窗口C#窗口 2022-12-21 12:12:58 611人浏览 安东尼
摘要

目录一 悬浮窗口二 创建悬浮窗口1 实现细节2 细节三 圆形背景一 悬浮窗口 特点: ① 窗口一般较小,有时为不规则背景; ② 置顶显示; ③ 窗口支持拖动; ④ 一般用于程序状态显

一 悬浮窗口

特点:

① 窗口一般较小,有时为不规则背景;

② 置顶显示;

③ 窗口支持拖动;

④ 一般用于程序状态显示,比如显示下载进度;

⑤ 一般支持右键菜单、拖拽操作等;

二 创建悬浮窗口

1 实现细节

① 无边框FORMBorderStyle:Noe;

② 置顶显示TopMost:true;

③ 显示位置StartPosition:Manual自由指定;

2 细节

对应Form来说先Show,后设置大小和位置

floatBox=new myFloatBox();
floatBox.Owner=this;
floatBox.Show();
floatBox.Bounds=new Rectangle(0,0,100,100);

三 圆形背景

代码实现:

① 添加一个正方形的图片资源;

② 绘制圆形图片;

③ 将外围白色区域设为透明;

④ 绘制一个蒙版,确保中间区域没有白色像素点;

子窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.windows.Forms;

namespace 圆形背景
{
    public partial class FloatingWindow : Form
    {
        private Image image;
        public FloatingWindow()
        {
            this.FormBorderStyle = FormBorderStyle.None;//无边框
            this.StartPosition = FormStartPosition.Manual;//手工指定位置
            this.ShowInTaskbar = false;//在任务栏不显示图标
            this.TopMost = true;//置顶显示
            this.BackColor = Color.White;//背景色
            this.TransparencyKey = Color.White;//指定透明区域的颜色

            this.SetStyle(ControlStyles.UserPaint, true);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            Graphics g = e.Graphics;
            int w = this.Width, h = this.Height;
            Rectangle rect = new Rectangle(0, 0, w, h);
            rect.Inflate(-2, -2);

            //平滑绘制,反锯齿
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

            //绘制一个圆形的图片
            if(true)
            {
                GraphicsPath path = new GraphicsPath();
                int radius = rect.Width / 2;
                int x = w / 2 - radius;
                int y = h / 2 - radius;
                path.AddEllipse(new Rectangle(x, y, radius * 2, radius * 2));

                //设置剪辑区域
                Region oldClip = g.Clip;
                g.Clip = new Region(path);

                //绘制图像(Clip区域之外的部分不会显示)
                if(this.image!=null)
                {
                    Console.WriteLine("图像:" + image.Size);
                    Console.WriteLine("位置" + this.Size);
                    g.DrawImage(image, rect);
                }

                //覆盖一层蒙版,确保纯白色像素点不会出现,因为纯白色是透明色
                Brush brush = new SolidBrush(Color.FromArgb(10, 255, 255, 255));
                g.FillRectangle(brush, rect);
                brush.Dispose();

                g.Clip.Dispose();
                g.Clip = oldClip;//恢复

                Pen pen = new Pen(Color.LightBlue);
                g.DrawPath(pen, path);
                pen.Dispose();
            }
        }

        public Image Image
        {
            get { return this.image; }
            set { this.image = value;
                this.Invalidate();
            }
        }
        
    }
}

父窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 圆形背景
{
    public partial class Form1 : Form
    {
        FloatingWindow floatingWindow;
        public Form1()
        {
            InitializeComponent();

            floatingWindow=new FloatingWindow();
            floatingWindow.Show();
            floatingWindow.Bounds = new Rectangle(0, 0, 100, 100);

            //设置悬浮窗口的背景图片
            floatingWindow.Image = Properties.Resources.XiaoWu;
        }

        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            base.OnFormClosing(e);
            floatingWindow.Dispose();
        }
    }
}

到此这篇关于C#实现悬浮窗口的方法详解的文章就介绍到这了,更多相关C#悬浮窗口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#实现悬浮窗口的方法详解

本文链接: https://www.lsjlt.com/news/175437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#实现悬浮窗口的方法详解
    目录一 悬浮窗口二 创建悬浮窗口1 实现细节2 细节三 圆形背景一 悬浮窗口 特点: ① 窗口一般较小,有时为不规则背景; ② 置顶显示; ③ 窗口支持拖动; ④ 一般用于程序状态显...
    99+
    2022-12-21
    C#悬浮窗口 C# 窗口
  • Kotlin实现Android系统悬浮窗详解
    目录Android 弹窗浅谈系统悬浮窗具体实现权限申请代码设计具体实现FloatWindowService 类FloatWindowManager 类FloatWindowManag...
    99+
    2024-04-02
  • Android实现悬浮窗的简单方法实例
    目录1. 前言2.原理3.具体实现3.1浮窗布局3.2 悬浮窗的实现1. 使用服务Service2. 获取WindowManager并设置LayoutParams3. 创建View并...
    99+
    2024-04-02
  • android6.0版本中怎么实现一个悬浮窗口
    这篇文章将为大家详细讲解有关android6.0版本中怎么实现一个悬浮窗口,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码如下:public class MainAct...
    99+
    2023-05-31
    android roi 悬浮窗口
  • Android应用内悬浮窗的实现方案示例
    1、悬浮窗的基本介绍悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是Activi...
    99+
    2023-05-30
    android
  • 如何使用纯CSS实现类似悬浮窗口的效果
    悬浮窗口是在网页设计中经常使用的一种效果,它可以提供快速访问功能或者展示重要的信息。本文将介绍如何使用纯CSS来实现类似悬浮窗口的效果,包括具体的代码示例。首先,我们需要在HTML中创建一个容器元素,用于承载悬浮窗口的内容。可以是一个div...
    99+
    2023-10-21
    实现 纯CSS 悬浮窗口
  • Android应用内悬浮窗Activity的简单实现
    目录前言缩放方法悬浮样式点击穿透空白移动悬浮窗例子的完整代码styles.xmllayoutactivity运行效果小结前言 悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个...
    99+
    2024-04-02
  • 怎么使用electron实现百度网盘悬浮窗口功能
    这篇文章将为大家详细讲解有关怎么使用electron实现百度网盘悬浮窗口功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。相关依赖里面使用了vuex vue vue-ro...
    99+
    2024-04-02
  • jquery插件实现悬浮菜单的方法
    这篇文章给大家分享的是有关jquery插件实现悬浮菜单的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式语法和短小清晰的多...
    99+
    2023-06-14
  • Android通过自定义Activity实现悬浮的Dialog详解
    前言其实实现悬浮的自定义窗体有很多方法,自定义Dialog,自定义layout 均可以实现。自定义activity也是可以的,今天我就介绍一下activity的实现方法。下面来看看详细的介绍:效果图如图可以看出,当前的窗体,第一眼其实和di...
    99+
    2023-05-31
    android 悬浮dialog 自定义activity
  • CSS实现悬浮标签效果的技巧和方法
    在网页设计中,悬浮标签效果是一种常见且常用的交互效果。它可以在用户鼠标悬停在某个元素上时,展示更多的信息或功能,提供更好的用户体验。本文将介绍一些实现悬浮标签效果的CSS技巧和方法,并提供具体的代码示例。一、基本悬浮标签效果基本的悬浮标签效...
    99+
    2023-10-21
    CSS悬浮效果 标签悬浮实现 CSS技巧和方法
  • 利用CSS实现图片悬浮效果的技巧和方法
    在网页设计中,图片悬浮效果是一种常见且吸引眼球的设计方式。通过悬浮效果,可以让用户在鼠标悬浮在图片上时,出现一些动画效果、文字说明或者其他有趣的交互效果。本文将介绍一些利用CSS实现图片悬浮效果的技巧和方法,并提供具体的代码示例。放大效果通...
    99+
    2023-10-21
    CSS 效果 图片悬浮
  • C#WPF调用QT窗口的方法
    WPF 程序内嵌 QT 窗体 1、目标:将QT控件(Qwiget)(或则基于QWiget的控件)(或则任何第三方C++控件)封装为WPF可调用的用户控件。简单来说就是WPF程序调用Q...
    99+
    2023-02-09
    C# WPF调用QT窗口 C# WPF调用QT
  • C++详解实现Stack方法
    目录栈简介stack模拟示例代码开发环境运行结果栈简介 栈本着先进后出的原则,来存取数据。作为数据结构中的一种,这里不多介绍相关栈。仅以此文记录C++中栈的实现,可帮助提升编程能力与...
    99+
    2024-04-02
  • JavaScriptiframe实现多窗口通信实例详解
    目录引言iframe 基本通信基本的 HTML 结构使用 JavaScript 在窗口之间发送消息注意事项类型如何传递函数并执行如何在父窗口访问到子窗口的 console引言 我最近...
    99+
    2024-04-02
  • 使用Pandas实现MySQL窗口函数的解决方法
    目录一、前言二、语法对比数据表row_number()lead()/lag()rank()/dense_rank()first_value()count()/sum()三、小结一、前...
    99+
    2023-02-22
    Pandas 窗口函数 Pandas mysql窗口函数
  • C#进度条在弹出窗口中显示的实现方法
    这篇文章主要介绍“C#进度条在弹出窗口中显示的实现方法”,在日常操作中,相信很多人在C#进度条在弹出窗口中显示的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#进度条在弹出窗口中显示的实现方法”的疑...
    99+
    2023-06-17
  • C++实现延迟的方法详解
    目录1、stl方式2、用boost实现, 没有用过3、sleep知识补充1、stl方式 std::this_thread::sleep_for(std::chrono::millis...
    99+
    2022-12-27
    C++实现延迟 C++延迟
  • C# MSN Messenger的窗口的实现浅析
    MSN Messenger是微软推出的一款即时通讯软件,它可以实现用户之间的文字聊天、传输文件、语音通话等功能。在C#中实现MSN ...
    99+
    2023-09-22
    C#
  • C++野指针和悬空指针的实现方法
    目录一、野指针二、悬空指针2.1 情况一2.2 情况二2.3 情况三野指针和悬空指针是指针中常见的两个概念,本文结合实例讲解来讲解下。 一、野指针 野指针是指尚未初始化的指针,既不...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作