rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十四)窗口颜色、透明度、居中显示

一、窗口颜色和透明度

(一)效果预览

(二)透明窗体主要代码

rust 复制代码
use eframe::egui; 
use egui::Color32;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default() // 创建视口构建器来配置窗口
            .with_inner_size([600., 500.])   // 设置窗口初始内部尺寸为600x500像素
            .with_transparent(true),         // 允许窗口背景透明
        centered: true,                      // 窗口启动时在屏幕上居中显示
        ..Default::default()                 // 使用其他默认选项
    };

    eframe::run_simple_native("窗体颜色和透明度", options, move |ctx, _frame| {
           ctx.set_visuals(egui::Visuals {
                // 设置面板填充颜色为半透明色,颜色由RGB值和透明度决定
                panel_fill: Color32::from_rgba_premultiplied(
                    25,                   // 红色分量(0-255)
                    0,                    // 绿色分量(0-255)
                    55,                   // 蓝色分量(0-255)
                    76,                   // 透明度分量(0-255)
                ),
                // 保留其他视觉样式的默认设置
                ..ctx.style().visuals.clone()
            });
        egui::CentralPanel::default().show(ctx, |ui| {
            load_fonts(ctx);        // 自定义的设置中文字体函数
            ui.label("窗体内容............");
        });
    })
}

二、程序中随意调整窗口颜色和透明度

(一)效果预览

(二)控制窗口颜色和透明度的主要代码

rust 复制代码
use eframe::egui; 
use egui::Color32;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default() // 创建视口构建器来配置窗口
            .with_inner_size([600., 500.])         // 设置窗口初始内部尺寸为500x500像素
            .with_transparent(true),               // 允许窗口背景透明
        centered: true,                            // 窗口启动时在屏幕上居中显示
        ..Default::default()                       // 使用其他默认选项
    };

    let mut opacity = 0.3;   // 控制窗口透明度
    let mut r = 25;          // 控制红色分量
    let mut g = 0;           // 控制绿色分量
    let mut b = 55;          // 控制蓝色分量
    
    eframe::run_simple_native("窗体颜色和透明度", options, move |ctx, _frame| {
           ctx.set_visuals(egui::Visuals {
                // 设置面板填充颜色为半透明色,颜色由RGB值和透明度决定
                panel_fill: Color32::from_rgba_premultiplied(
                    r,                       // 红色分量
                    g,                       // 绿色分量
                    b,                       // 蓝色分量
                    (opacity * 255.0) as u8, // 透明度分量(将0-1范围转换为0-255范围)
                ),
                // 保留其他视觉样式的默认设置
                ..ctx.style().visuals.clone()
            });
            
        egui::CentralPanel::default().show(ctx, |ui| {
            load_fonts(ctx);      // 自定义加载字体函数
            ui.add(egui::Slider::new(&mut opacity, 0.0..=1.0).text("透明度"));
            ui.add(egui::Slider::new(&mut r, 0..=255).text("红色"));
            ui.add(egui::Slider::new(&mut g, 0..=255).text("绿色"));
            ui.add(egui::Slider::new(&mut b, 0..=255).text("蓝色"));
            ui.label(format!("当前颜色: ({}, {}, {})", r, g, b));
        });
    })
}
相关推荐
前进的李工4 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律6 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
蒸蒸yyyyzwd6 小时前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo7 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga8 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao8 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野9 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光9 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
ACP广源盛139246256739 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU10 小时前
初中数学教学中合作学习的研究与实践
学习