C#悬浮窗口 图像背景

这篇具有很好参考价值的文章主要介绍了C#悬浮窗口 图像背景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 悬浮窗口

特点:
① 窗口一般较小,有时为不规则背景;
② 置顶显示;
③ 窗口支持拖动;
④ 一般用于程序状态显示,比如显示下载进度;
⑤ 一般支持右键菜单、拖拽操作等;

二 创建悬浮窗口

特点:
① 窗口一般较小,有时为不规则背景;
② 置顶显示;
③ 窗口支持拖动;
④ 一般用于程序状态显示,比如显示下载进度;
⑤ 一般支持右键菜单,拖拽操作等;

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();
            }
        }
        
    }
}

父窗体文章来源地址https://www.toymoban.com/news/detail-411396.html

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#悬浮窗口 图像背景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 20230911 CLion 中 commit 窗口悬浮之后,再dock到主窗口

    今天在CLion上把commit对比窗口拖出来悬浮之后,发现界面上没有恢复的按钮了! 关闭窗口,重启都没用。。。 直接上图 在网上找了半天也没找到解决办法,什么ChatGPT也没用… 最后还是得靠自己找

    2024年02月09日
    浏览(23)
  • 如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口

    在Qt框架中,要实现一个无标题栏、半透明、置顶(悬浮)的窗口,需要一些特定的设置和技巧。废话不多说,下面我将以DrawClient软件为例,介绍一下实现这种效果的四个要点。 要点一:移除标题栏(去除关闭、最小化、最大化按钮) 在窗口的构造函数中设置窗口的样式,

    2024年02月19日
    浏览(28)
  • selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

    driver=webdriver.Chrome() driver.maximize_window() driver.get(\\\"https://www.baidu.com/\\\") 在进行页面操作时,需要用鼠标进行左键点击、右键点击、双击、鼠标悬浮(比如鼠标移到某个位置就会出现一些元素)、鼠标拖动等操作,这时需要导入ActionChains模块 perform() 执行所有ActionChains 中存储的行为

    2024年02月05日
    浏览(52)
  • Qt 设置窗口背景

    窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置? 一、QPalette设置背景 二、实现paintEvent,使用QPainter来绘制背景 三、使用QSS来设置背景  关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然

    2024年02月11日
    浏览(26)
  • echarts 使用地图,设置背景图片和高亮图片,点击实现高亮显示,更换散点图图片,高亮散点图形,3D悬浮效果展示地图,集成Vue组件

    先看下   需要实现的效果: 第一步 需准备需要的插件  1  注意新版 echarts 的引入方式为:  import * as echarts from \\\'echarts\\\',这里我把 echarts 直接挂载到了Vue上,本项目使用echarts比较多,这样的话很方便,也可以在需要echarts的模块按需引入        在main.js中添加以下代码:

    2024年02月10日
    浏览(41)
  • 【深度学习】【风格迁移】Visual Concept Translator,一般图像到图像的翻译与一次性图像引导,论文

    General Image-to-Image Translation with One-Shot Image Guidance 论文:https://arxiv.org/abs/2307.14352 代码:https://github.com/crystalneuro/visual-concept-translator 最近,大规模的文本到图像模型在大量文本-图像对上进行预训练,表现出了出色的图像合成性能。然而,图像可以提供比纯文本更直观的视觉概

    2024年02月13日
    浏览(30)
  • Vc - Qt - 绘制窗口背景色

    要在Qt中绘制一个背景颜色,你可以使用Qt的绘图功能来完成。下面是一种简单的方法: 步骤1:在你想要绘制背景颜色的QWidget(例如QMainWindow或QDialog)的派生类中,重写 它的paintEvent函数。 步骤2:在你的重写的paintEvent函数中,创建一个QPainter对象,并使用它来设置你想要的

    2024年02月13日
    浏览(27)
  • C# 编程语言有什么特点?

    在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C#的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!C#(C Sharp)是一种由Microsoft开发的多范式编程语言,最初发布于2000年。以下是C#编程语言的一

    2024年01月22日
    浏览(46)
  • 全网最细JAVA窗口背景图片设置

     一.通过重写paint()方法设置背景图片 1.首先建立保存图片的文件夹,如下图所示建立文件夹; 2.在左侧找到你所建立的文件夹名称,然后把需要设置的背景图片复制进去  3.建立窗口,重写paint方法,绘制图片 4.建立工具类 5.效果如图所示 二.通过Jlabel()文本,设置背景图片

    2024年02月11日
    浏览(37)
  • 【QT】 QLabel背景图片自适应窗口大小

    这是最终效果: 想要图片跟随窗口自适应大小,首先我们先对QWidget进行网格布局,布局效果如下: 布局完成后添加 QLabel 代码,新建 QLabel 并且设置为可扩展内容,再设置图片放置最后面,否则图片在最前面会遮挡控件。 然后重写 qt 的绘画事件: 这是绘画事件的实现代码:

    2024年02月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包