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

[复制链接]
发表于 2025-9-16 19:21:06 | 显示全部楼层 |阅读模式
一、窗口颜色和透明度

(一)结果预览


(二)透明窗体主要代码
  1. use eframe::egui;
  2. use egui::Color32;
  3. fn main() -> eframe::Result<()> {
  4.     let options = eframe::NativeOptions {
  5.         viewport: egui::ViewportBuilder::default() // 创建视口构建器来配置窗口
  6.             .with_inner_size([600., 500.])   // 设置窗口初始内部尺寸为600x500像素
  7.             .with_transparent(true),         // 允许窗口背景透明
  8.         centered: true,                      // 窗口启动时在屏幕上居中显示
  9.         ..Default::default()                 // 使用其他默认选项
  10.     };
  11.     eframe::run_simple_native("窗体颜色和透明度", options, move |ctx, _frame| {
  12.            ctx.set_visuals(egui::Visuals {
  13.                 // 设置面板填充颜色为半透明色,颜色由RGB值和透明度决定
  14.                 panel_fill: Color32::from_rgba_premultiplied(
  15.                     25,                   // 红色分量(0-255)
  16.                     0,                    // 绿色分量(0-255)
  17.                     55,                   // 蓝色分量(0-255)
  18.                     76,                   // 透明度分量(0-255)
  19.                 ),
  20.                 // 保留其他视觉样式的默认设置
  21.                 ..ctx.style().visuals.clone()
  22.             });
  23.         egui::CentralPanel::default().show(ctx, |ui| {
  24.             load_fonts(ctx);        // 自定义的设置中文字体函数
  25.             ui.label("窗体内容…………");
  26.         });
  27.     })
  28. }
复制代码
二、步调中随意调解窗口颜色和透明度

(一)结果预览


(二)控制窗口颜色和透明度的主要代码
  1. use eframe::egui;
  2. use egui::Color32;
  3. fn main() -> eframe::Result<()> {
  4.     let options = eframe::NativeOptions {
  5.         viewport: egui::ViewportBuilder::default() // 创建视口构建器来配置窗口
  6.             .with_inner_size([600., 500.])         // 设置窗口初始内部尺寸为500x500像素
  7.             .with_transparent(true),               // 允许窗口背景透明
  8.         centered: true,                            // 窗口启动时在屏幕上居中显示
  9.         ..Default::default()                       // 使用其他默认选项
  10.     };
  11.     let mut opacity = 0.3;   // 控制窗口透明度
  12.     let mut r = 25;          // 控制红色分量
  13.     let mut g = 0;           // 控制绿色分量
  14.     let mut b = 55;          // 控制蓝色分量
  15.    
  16.     eframe::run_simple_native("窗体颜色和透明度", options, move |ctx, _frame| {
  17.            ctx.set_visuals(egui::Visuals {
  18.                 // 设置面板填充颜色为半透明色,颜色由RGB值和透明度决定
  19.                 panel_fill: Color32::from_rgba_premultiplied(
  20.                     r,                       // 红色分量
  21.                     g,                       // 绿色分量
  22.                     b,                       // 蓝色分量
  23.                     (opacity * 255.0) as u8, // 透明度分量(将0-1范围转换为0-255范围)
  24.                 ),
  25.                 // 保留其他视觉样式的默认设置
  26.                 ..ctx.style().visuals.clone()
  27.             });
  28.             
  29.         egui::CentralPanel::default().show(ctx, |ui| {
  30.             load_fonts(ctx);      // 自定义加载字体函数
  31.             ui.add(egui::Slider::new(&mut opacity, 0.0..=1.0).text("透明度"));
  32.             ui.add(egui::Slider::new(&mut r, 0..=255).text("红色"));
  33.             ui.add(egui::Slider::new(&mut g, 0..=255).text("绿色"));
  34.             ui.add(egui::Slider::new(&mut b, 0..=255).text("蓝色"));
  35.             ui.label(format!("当前颜色: ({}, {}, {})", r, g, b));
  36.         });
  37.     })
  38. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表