azul

2025-12-11 0 108

azul桌面GUI框架

azul是使用Webrender渲染引擎和A CSS / HTML类似于Rust的Rust,C和C ++的免费,功能性,反应性GUI框架,用于快速开发美丽的本机桌面应用程序

网站|发行|用户指南| API文档|视频演示|矩阵聊天

特征

azul使用Webrender(Firefox背后的渲染引擎)渲染您的UI,因此它支持许多常见的CSS功能,例如:

  • 梯度(线性,径向,圆锥)

  • 盒子阴影

  • SVG过滤器

  • 组成操作员(乘,变暗等)

  • 边境风格

  • 边界拉迪

  • 滚动 /自动溢出

  • CSS转换

有关更多信息,请参见支持的CSS密钥 /值列表。

最重要的是, azul功能…

  • 许多内置的小部件(按钮,文本输入,复选框,colorInput,textInput,numbernput)

  • 嵌入OpenGL纹理

  • 基于CSS Flexbox的简化类似于HTML的相对/绝对布局系统

  • 通过动画API进行60+ FPS动画

  • 跨平台本地对话

  • 跨平台文本构图和渲染

  • SVG解析和渲染

  • 用于渲染大量2D线,圆,矩,形状等的形状缝线。

  • 管理I/O的主线程任务

  • 通过共享库*动态链接*

  • 可通过自动生成的API绑定提供Rust,C,C ++和Python **

  • 快速原型制作 /热重新加载的html-to-lust汇编

*静态链接尚未可用

** C ++绑定和Python尚未稳定,并且可能取决于您使用的分支。他们将在发布前稳定。

你好世界

Python

 from azul import *class DataModel :def __init__ ( self , counter ):self . counter = counterdef render_dom ( data , info ):    label = Dom . text ( "{}" . format ( data . counter ))label . set_inline_style ( "font-size: 50px;" )    button = Button ( "Increment counter" )button . set_on_click ( data , increment_counter )dom = Dom . body ()dom . add_child ( label )dom . add_child ( button . dom ())return dom . style ( Css . empty ())def increment_counter ( data , info ):data . counter += 1 ;return Update . RefreshDomapp = App ( DataModel ( 5 ), AppConfig ( LayoutSolver . Default ))app . run ( WindowCreateOptions ( render_dom ))

 use azul :: prelude :: * ;use azul :: widgets :: { button :: Button , label :: Label } ;struct DataModel {counter : usize ,}extern "C" fn render_dom ( data : & mut RefAny , _ : & mut LayoutInfo ) -> StyledDom {let data = data . downcast_ref :: < DataModel > ( ) ? ;let label = Dom :: text ( format ! ( "{}" , data . counter ) ). with_inline_style ( "font-size: 50px;" ) ;let button = Button :: new ( "Increment counter" ). onmouseup ( increment_counter , data . clone ( ) ) ;Dom :: body ( ). with_child ( label ). with_child ( button . dom ( ) ). style ( Css :: empty ( ) )}extern "C" fn increment_counter ( data : & mut RefAny , _ : & mut CallbackInfo ) -> Update {let mut data = data . downcast_mut :: < DataModel > ( ) ? ;data . counter += 1 ;Update :: RefreshDom // call render_dom() again}fn main ( ) {let initial_data = RefAny :: new ( DataModel { counter : 0 } ) ;let app = App :: new ( initial_data , AppConfig :: default ( ) ) ;app . run ( WindowCreateOptions :: new ( render_dom ) ) ;}

c

 #include " azul .h"typedef struct {uint32_t counter ;
} DataModel ;void DataModel_delete ( DataModel * restrict A ) { }AZ_REFLECT ( DataModel , DataModel_delete );AzStyledDom render_dom ( AzRefAny * data , AzLayoutInfo * info ) {DataModelRef d = DataModelRef_create ( data );if !( DataModel_downcastRef ( data , & d )) {return AzStyledDom_empty ();
    }    char buffer [ 20 ];int written = snprintf ( buffer , 20 , "%d" , d -> counter );AzString const labelstring = AzString_copyFromBytes ( & buffer , 0 , written );AzDom label = AzDom_text ( labelstring );AzString const inline_css = AzString_fromConstStr ( "font-size: 50px;" );AzDom_setInlineStyle ( & label , inline_css );    AzString const buttontext = AzString_fromConstStr ( "Increment counter" );AzButton button = AzButton_new ( buttontext , AzRefAny_clone ( data ));AzButton_setOnClick ( & button , incrementCounter );AzDom body = Dom_body ();AzDom_addChild ( body , AzButton_dom ( & button ));AzDom_addChild ( body , label );    AzCss global_css = AzCss_empty ();return AzDom_style ( body , global_css );
}Update incrementCounter ( RefAny * data , CallbackInfo * event ) {DataModelRefMut d = DataModelRefMut_create ( data );if !( DataModel_downcastRefMut ( data , & d )) {return Update_DoNothing ;
    }d -> ptr . counter += 1 ;DataModelRefMut_delete ( & d );return Update_RefreshDom ;
}int main () {DataModel model = { . counter = 5 };AzApp app = AzApp_new ( DataModel_upcast ( model ), AzAppConfig_default ());AzApp_run ( app , AzWindowCreateOptions_new ( render_dom ));return 0 ;
}

执照

azul获得了MPL-2.0的许可。这意味着是的,您可以使用azul构建专有应用程序而无需发布您的代码:您只需要发布对库本身进行的更改。

版权所有2017年 – 当前FelixSchütt

下载源码

通过命令行克隆项目:

git clone https://github.com/fschutt/azul.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 azul https://www.zuozi.net/34033.html

RVC WebUI MacOS
上一篇: RVC WebUI MacOS
orc apps
下一篇: orc apps
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务