当前位置: 首页 > news >正文

kanzi3.6.10 窗口插件-网页生成界面

文章目录

  • 1. 插件设计
  • 2. 插件实现
  • 3. 运行插件
  • 4. 结论

背景:设计师用Sketch设计界面原型,导出html格式给开发人员。程序员会根据UI实现kanzi界面。这个过程的问题是程序员需要仔细把UI原型转换为kanzi界面的相应节点,繁琐的设置坐标、宽高、字体等等。希望有个工具能自动把UI原型转换为kanzi界面。

工作流
在这里插入图片描述

1. 插件设计

在这里插入图片描述

2. 插件实现

窗口插件的创建,请参考 https://blog.csdn.net/chen_227/article/details/144720596

c#界面如下
在这里插入图片描述
open选择html

private void Button_Open_Click(object sender, RoutedEventArgs e){// 创建一个OpenFileDialog实例OpenFileDialog openFileDialog = new OpenFileDialog();// 设置过滤器,只显示HTML文件openFileDialog.Filter = "HTML Files (*.html)|*.html|All Files (*.*)|*.*";openFileDialog.FilterIndex = 1; // 默认显示HTML文件// 显示对话框if (openFileDialog.ShowDialog() == true){// 获取选择的文件路径string filePath = openFileDialog.FileName;HtmlPathText = filePath;
// 使用JsonDocument解析JSON字符串
JsonDocument doc = JsonDocument.Parse(jsonString);
JsonElement root = doc.RootElement;

创建layer

Screen screen = studio.ActiveProject.Screen;
Node2D rootNode2D = screen.RootNode2D;
var node = studio.ActiveProject.CreateProjectItem<EmptyNode2D>(
rootNode2D.GenerateUniqueChildName(name), rootNode2D);HandleJsonDataLayers(node, layers);

创建文字节点

var textblock2d = studio.ActiveProject.CreateProjectItem<TextBlock2D>(
parent.GenerateUniqueChildName("text_" + name), parent);

设置节点属性

textblock2d.Set(textblock2d.PropertyTypes.TextBlockConceptText, content);
textblock2d.Set(textblock2d.PropertyTypes.TextBlockConceptFontSize, fontSize);
ResourceReference<FontFile> newFontReference = new ResourceReference<FontFile>(fontFile);textblock2d.Set(textblock2d.PropertyTypes.NodeFont, newFontReference);
textblock2d.Set(textblock2d.PropertyTypes.Node2DRenderTransformation, tran);textblock2d.Set(textblock2d.PropertyTypes.NodeWidth, width);
textblock2d.Set(textblock2d.PropertyTypes.NodeHeight, height);textblock2d.Set(textblock2d.PropertyTypes.NodeOpacity, (float)opacity);

窗口插件的安装,

编译后的dll文件需要拷贝到kanzi安装目录下的plugins文件夹下,重启kanzi,在菜单栏点击插件,打开插件窗口

3. 运行插件

界面 Select html,选择html文件
界面 Set FontFace,设置html的字体和kanzi的字体映射关系
运行结果
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4. 结论

插件并不能完全代替正式项目,但是可以根据UI快速建立原型工程

http://www.dtcms.com/a/294823.html

相关文章:

  • istio-proxy用哪个端口代理http流量的?
  • 百度文心大模型ERNIE全面解析
  • 绿地集团携手深兰科技推动AI医诊大模型快速落地
  • AI产品经理面试宝典第48天:产品设计与用户体验优化策略
  • 从零解析DeepSeek Excel公式生成器的深度学习实现原理
  • Mybatis_1
  • Spring Bean初始化及@PostConstruc执行顺序
  • 零侵入加解密方案:Spring Boot + Jasypt + AOP实现敏感数据自动保护
  • Leetcode力扣解题记录--第54题(矩阵螺旋)
  • 表征工程中哪里用到内积 :内积vs余弦相似度--谁更胜一筹?
  • 智慧农业平台-农资农服农业数字化转型
  • 算法第三十七天:动态规划part05(第九章)
  • Golang各版本特性
  • 算法:数组part01:704. 二分查找 +977.有序数组的平方
  • ZeroMQ源码深度解析:高性能网络库的架构设计与性能优化
  • 高效编程革命:DeepSeek V3多语言支持与性能优化实战
  • 【前端】当前主流的 CSS 预处理器语言Sass / SCSS、Less、Stylus
  • C++:list(1)list的使用
  • HomeAssistant本地开发笔记
  • 「iOS」——KVO
  • MCP客户端架构与实施
  • SQL基础⑦ | 子查询
  • Linux——System V 共享内存 IPC
  • 【第十二章 W55MH32 NetBIOS示例标题】
  • ChatGPT桌面版深度解析
  • clientHeight(用于获取元素的可视高度)
  • 大致自定义文件I/O库函数的实现详解(了解即可)
  • 计算机网络学习----域名解析
  • uni-app平板端自定义样式合集
  • 【67】MFC入门到精通——MFC 销售管理系统 项目实现详细教程