RGF_UI(​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​Win原生UI控件)

介绍

    RGF_UI是基于RGF_CJ开发的Windows平台控件库,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​旨在为开发者提供开箱即用的GUI组件,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​这些组件支持通过主题统一修改配色,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​也支持独立调整个体样式。

    关于本项目可通过链接访问开源仓库。​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​

教程与案例

本项目长期维护,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​关注 链接 Bilibili UID:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​3546853029185667,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​观看视频教程与最新动态 !

RGF_CJ可见仓库:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​链接 RGF_CJ

更多案例代码与课程代码详见:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​链接 RGF_CJ_Example

项目特性

  • 多后端渲染

    RGF_UI目前支持Direct2D及GDI/GDI+两个渲染后端,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​可以实现组件在两种方案的自由切换。

  • 安全的使用机制

    RGF_UI独立渲染线程,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​拥有安全的访问机制。

  • 平台原生

    RGF专注于Windows操作系统,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​无跨平台相关的冗余兼容代码和性能浪费,内存占用相较于跨平台与Web封装方案更低。​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​

使用说明

编译构建

(​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​注‘ 本项目提供Build脚本进行自动化编译,编译结果自动置入Build文件夹中。使用自动化脚本前,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​请确保已经完整安装Cangjie编译环境,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​并且正确配置环境变量)

  1. 选择并下载合适的 Release/Debug 版本库,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​重命名为libRgf.dll后,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​置入./libs/目录

  2. (​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​非必须)选择合适版本的静态库libuser32.alibimm32.a置入./libs/目录

  3. 确认cjpm.toml中的库路径配置与链接配置

    指定库路径:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​-L .​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​/libs
    
链接静态库:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​-l user32 -l imm32
    
链接项目库:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​-l:libRgf.dll
    
透传链接资源文件:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​.​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​/libs/resources.rc.o(开发者可自行准备此文件)
    
指定子系统:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​-subsystem windows

# 参考配置
#(此处未指定-subsystem windows,便于通过控制台查看相关信息)
[package]
  compile-option = "-Woff unused"
  link-option = "-L ./libs -l:libRgf.dll -l user32 -l imm32 ./libs/resources.rc.o"
  1. 配置异常抛出语言 (​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​注’ 可跳过,默认英文)

    英文:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​—cfg “RGF_LANG=en”
    
中文:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​—cfg “RGF_LANG=zh-cn”

[profile]
  [profile.customized-option]
    rgfCfg = "--cfg \"RGF_LANG=zh-cn\""
  1. 编译或调试
cjpm update
cjpm build

(​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​注‘ 若在编辑器内直接调试,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​请将运行依赖的dll文件,放置到项目\target\debug\bin目录下)

功能示例

注’ 详细使用示例请等待后续整理的开发者文档

RGF_UI库的基础使用 功能示例

  1. 进入RGF_UI环境

    示例代码如下:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​

    // 1.引入RGF库
    import rgfui.*
    // 2.进入主方法
    UIMain({=>
        
    })
  2. 创建一个窗口

    示例代码如下:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​

    let win = UIWin()
    // 创建一个随机位置,宽高都为 500 的普通窗口
    win.createWin(
        uiGetContext(),"UIWin",Int32.Min,Int32.Min,500,500,0,
        WinStyle.OverlappedWindow | WinStyle.ClipChildren | WinStyle.Visible
    )

约束与限制

Windows 8Windows 10Windows 11

(​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​注’ 更多环境依赖,可参考RGF_CJ项目)

首版作者信息

(​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​添加请备注:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​“RGF”)

@Author:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​饶子俊

@WeChat:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​*

@QQ :​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​2874148643

@E-mail:​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​ 2874148643@qq.​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​com

参与贡献

欢迎大家提交PR、Issue,​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​欢迎大家参与任何形式的贡献。​‌‎​​‌‎​‌​‎‌‌​​‎​‌‌‌‎‌‌‌‌‌‎‌​‌‌‎‌​​‌‎​