一种C# Winform的UI处理

效果

·圆角 + 阴影 +突出按钮

说明

这是一种另类的处理,不是多层窗口 也不是WPF 。这种方式的特点是比较简单,例如圆角、阴影、按钮等特别容易修改过。其实就是html + css + DirectXForm。

在VS中如下

圆角和阴影

然后编辑这个窗体的Html模板,例如圆角和阴影的调整可以修改CSS中的

    border-radius: 14px;
    box-shadow: 0px 8px 24px 0px rgba(0, 0, 0, 0.2);

我要想一个小圆角可以改成 border-radius: 6px;

中间的按钮

中间的按钮的CSS

.play_btn
{
    position: fixed;
    left: 50%;
    margin-left: -39px;
    cursor: pointer;
    bottom: 22px;    
    display: inline-block;
    width: 78px;
    height: 78px;
    background-color: rgb(255, 255, 255);     
    border-radius: 39px;
    box-shadow: 4px 8px 8px 0px rgba(80, 80, 80, 0.55); 
}
如果你想要个丑点的阴影 ,可以改成

box-shadow: 4px 8px 8px 0px rgba(255, 0, 0, 0.75);

反正就是CSS

窗体可以随便放控件 

全部代码

using DevExpress.Utils;
using DevExpress.Utils.Html;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace MP3Cut
{public partial class Form1 : DevExpress.XtraEditors.DirectXForm{public Form1(){InitializeComponent();HtmlElementMouseDown += DemoDirectXForm_HtmlElementDown;}public DxHtmlElement element_mouse = null;void DemoDirectXForm_HtmlElementDown(object sender, DxHtmlElementMouseEventArgs e){var args = e.MouseArgs as DXMouseEventArgs;if (e.Element == null || args == null)return;element_mouse = e.Element;args.Handled= click_proc(element_mouse);}bool click_proc(DxHtmlElement element){if (element == null)return false;string id = element.Id;if ((string.Compare(id, "playbutton", true) == 0)|| (string.Compare(id, "playbutton_img", true) == 0)){DxHtmlImageElement el = (DxHtmlImageElement)(this.FindElementById("playbutton_img"));string src = el.Src;if (string.Compare(src, "play", true) == 0){el.ClassName = "img_pause";el.Src = "pause";                    }else{el.ClassName = "img_play";el.Src = "play";} //directXFormContainerControl1.Refresh();  return true;}return false;}private void Form1_MouseClick(object sender, MouseEventArgs e){}private void directXFormContainerControl1_DoubleClick(object sender, EventArgs e){}private void Form1_MouseDoubleClick(object sender, MouseEventArgs e){if (element_mouse != null){                click_proc(element_mouse);this.Invalidate(true);this.Scale(1.000f);}}private void simpleButton1_Click(object sender, EventArgs e){if (element_mouse != null){click_proc(element_mouse);this.Invalidate(true);this.Scale(1.000f);}}}
}

HTML

<div class="shadowframe"><div class="frame" id="frame"><div class="titlebar"><img class="logo" src="logo" /><div class="title">一个例子</div><div class="searchbox"></div> <img class="button" src="Close" id="closebutton"/></div><div class="content" id="content"></div><div class="footerbar"> <img class="button" src="begin" id="beginbutton"/><div  style="width:200px;display: inline-block;"></div>				<img class="button" src="end" id="enbbutton"/>	</div></div><div class="play_btn" id="playbutton"><img class="img_play" id="playbutton_img" src="play" /></div>	
</div>

CSS

body{
    padding: 30px;
}
.titlebar{
    padding: 11px 12px 11px 11px;
    display: flex;
    flex-direction: row;
    height: 40px;
}
.shadowframe{
    height: 100%;
    border-radius: 6px;
    box-shadow: 0px 8px 24px 0px rgba(0, 0, 0, 0.2);
}
.frame{
    height: 100%;
    display: flex;
    flex-direction: column;
    border-radius: 6px;
    border: 1px solid rgba(0, 0, 0, 0.2);
    background-color: rgb(252, 252, 253);
    box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15);
}
.footerbar{
    padding: 11px 11px 11px 10px;
    align-items: center;  
    height: 42px;
    background-color:rgb(249,250,251);
    border-radius: 0px 0px 13px 13px;
    text-align: center;
    border-top: 1px solid rgb(229, 231, 235);
}
.contenttext{
    display: flex;
    justify-content: center;
    align-items:center;
    flex-direction: column;
    align-self: center;
    font: 14px 'Segoe UI';
    color: @DisabledText/0.5;
}
.content{
    flex-grow: 1;
}   
.panelspace{
    flex-grow:1;
}
.button {
    margin: 0px 4px 0px 4px;
    padding: 8px;
    opacity: 1;
    object-fit: none;
}
.button:hover{
    border-radius: 8px;
    background-color: @ControlText/0.2;
}
.button:active{
    opacity: 0.25;
    border-radius: 8px;
    background-color: @ControlText/0.2;
}
.logo{
    margin:-5px 15px 0px 0px;
    object-fit: none;
}
.searchbox{
    display: flex;
    flex-direction: row;    
    height: 40px;
    flex-grow: 1;
}
.play_btn
{
    position: fixed;
    left: 50%;
    margin-left: -39px;
    cursor: pointer;
    bottom: 22px;    
    display: inline-block;
    width: 78px;
    height: 78px;
    background-color: rgb(255, 255, 255);     
    border-radius: 39px;
    box-shadow: 4px 8px 8px 0px rgba(80, 80,80, 0.55);
   
}

.play_btn:hover{ 
    background-color: rgb(237,238,239);
}
.play_btn:active{ 
    background-color:  rgb(244,248,249);
}
.img_play {
    width: 42px;
    height: 42px;
    margin-top: 19px;
    margin-left: 24px;
    pointer-events: none;
}  
.img_pause {
    width: 24px;
    margin-top: 22px;
    margin-left: 27px;
    pointer-events: none;
}  
.title {
    padding: 5px;
    display: inline-block;
    font: 19px 'Segoe UI';
    font-weight: bold;
    color: rgb(100, 116, 139);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS-ArkUI Navigation (导航组件)-第一部分

导航组件主要实现页面间以及组件内部的界面跳转&#xff0c;支持在不同的组件间进行参数的传递&#xff0c;提供灵活的跳转栈操作&#xff0c;从而便捷的实现对不同页面的访问和复用。 我们之前学习过Tabs组件&#xff0c;这个组件里面也有支持跳转的方式&#xff0c;Navigati…

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架实现PWCNet光流估计

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 1 环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;可以在昇思教程中进入ModelArts官网 创建…

虚幻基础:UI

文章目录 控件蓝图可以装载其他控件蓝图可以安装其他蓝图接口 填充&#xff1a;相对于父组件填充水平框尺寸—填充—0.5&#xff1a;改变填充的尺寸填充—0.5&#xff1a;改变与父组件的距离 锚点&#xff1a;相对于父组件的控件坐标系原点&#xff0c;屏幕比例改变时&#xff…

监控平台——SkyWalking部署

一、环境准备 先下载SkyWalking安装包&#xff0c;需要注意的是SkyWalking 版本在10.X以上使用的nacos-client是2.X&#xff0c;如果安装的Nacos版本是1.X就会存在兼容性的问题。由于本人使用的SpringBoot项目是2.7.X版本&#xff0c;安装的Nacos版本只能是1.X版本的&#xff…

热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab - Sony S-Log3 Cinematic LUTs

热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab – Sony S-Log3 Cinematic LUTs 我们最好的 Film Look S-Log3 LUT 的集合&#xff0c;适用于索尼无反光镜相机。无论您是在户外、室内、风景还是旅行电影中拍摄&#xff0c;这些 LUT 都经过优化&#xff0c;可为…

自动化工作流工具的综合对比与推荐

最近收到很多朋友私信我说&#xff1a;“刷短视频的时候&#xff0c;总是刷到自动化工作流的工具&#xff0c;有好多直播间都在宣传&#xff0c;不知道哪款工具好”。我花了点时间&#xff0c;做了一下测试&#xff0c;大家可以参考一下&#xff0c;以下内容&#xff1a; 以下…

fircrawl本地部署

企业内部的网站作为知识库给dify使用&#xff0c;使用fircrawl来爬虫并且转换为markdown。 ​ git clone https://github.com/mendableai/firecrawl.gitcd ./firecrawl/apps/api/ cp .env.example .env cd ~/firecrawl docker compose up -d 官方&#xff1a; https://githu…

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…

CentOS 8 Stream 配置在线yum源参考 —— 筑梦之路

CentOS 8 Stream ISO 文件下载地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_64/CentOS-Stream-8-20240603.0-x86_64-dvd1.isoCentOS 8 Stream 网络引导ISO 文件下载地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_6…

网络原理-TCP/IP

网络原理学习笔记&#xff1a;TCP/IP 核心概念 本文是我在学习网络原理时整理的笔记&#xff0c;主要涵盖传输层、网络层和数据链路层的核心协议和概念&#xff0c;特别是 TCP, UDP, IP, 和以太网。 一、传输层 (Transport Layer) 传输层负责提供端到端&#xff08;进程到进…

EF Core 执行原生SQL语句

文章目录 前言一、执行查询&#xff08;返回数据&#xff09;1&#xff09; 使用 FromSqlRaw或 FromSqlInterpolated 方法&#xff0c;适用于 DbSet<T>&#xff0c;返回实体集合。2&#xff09;结合 LINQ 查询3&#xff09;执行任意原生SQL查询语句&#xff08;使用ADO.N…

Unity LOD Group动态精度切换算法(基于视锥+运动速度)技术详解

一、动态LOD技术背景与核心挑战 1. 传统LOD系统的局限 静态阈值切换&#xff1a;仅基于距离的切换在动态场景中表现不佳 视觉突变&#xff1a;快速移动时LOD层级跳变明显 性能浪费&#xff1a;静态算法无法适应复杂场景变化 对惹&#xff0c;这里有一个游戏开发交流小组&…

MyBatis复杂查询——一对一、一对多

目录 &#xff08;一&#xff09;复杂查询&#xff1a;1对1关系 【任务】数据库里有学生表(student)和学生证信息表(student_card)&#xff0c;表结构如下所示&#xff0c;要求使用MyBatis框架查询所有的学生信息以及每位学生的学生证信息 解决方案1&#xff1a;关联查询实现…

【服务端】使用conda虚拟环境部署Django项目

写在开头 为了与客户端的Deep search配合&#xff0c;需要整一个后台管理来保存和管理deep search的数据资料。选择前端框架Vue-Vben-Admin Django后台服务来实现这个项目。 废话结束&#xff0c;从零开始。。。。 一、环境搭建 1. 安装 Anaconda 下载 Anaconda&#xff1…

Python爬虫-爬取大麦网演出详情页面数据

前言 本文是该专栏的第50篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者以大麦网平台为例。基于Python,实现获取演出详情页面的演出信息。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内…

多onnx模型导出合并调研(文本检测+方向分类+文本识别)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! 多onnx模型合并导出调研(文本检测+方向分类+文本识别) 引言1,尝试合并两个模型(文本方向分类+文本识别模型)(并行合并)(1)文本方向分类(2)文本识别模型(…

Flink介绍——实时计算核心论文之S4论文详解

引入 在上一篇我们对Flink的发展历史有了全局的了解&#xff0c;下面我们会通读几篇分布式实时处理相关的重要论文&#xff0c;从S4到Storm&#xff0c;再从MillWheel到Dataflow&#xff0c;最后到Flink。 通过深入梳理分布式实时处理技术的发展脉络&#xff0c;了解这些年技…

【商城实战(97)】ELK日志管理系统的全面应用

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…

Linux系统-ls命令

一、ls命令的定义 Linux ls命令&#xff08;英文全拼&#xff1a;list directory contents&#xff09;用于显示指定工作目录下之内容&#xff08;列出目前工作目录所含的文件及子目录)。 二、ls命令的语法 ls [选项] [目录或文件名] ls [-alrtAFR] [name...] 三、参数[选项…

游戏被外挂攻破?金融数据遭篡改?AI反作弊系统实战方案(代码+详细步骤)

一、背景与需求分析 随着游戏行业与金融领域的数字化进程加速,作弊行为(如游戏外挂、金融数据篡改)日益复杂化。传统基于规则的防御手段已难以应对新型攻击,而AI技术通过动态行为分析、异常检测等能力,为安全领域提供了革命性解决方案。本文以游戏反作弊系统和金融数据安…