当前位置:首页 > 科技  > 软件

图形编辑器开发:属性显示与格式转换

来源: 责编: 时间:2023-10-10 18:30:15 353观看
导读大家好,我是前端西瓜哥。今天简单讲讲图形编辑器的显示属性值时,会遇到的格式转换问题。编辑器 github 地址:https://github.com/F-star/suika线上体验:https://blog.fstars.wang/app/suika/单位转换图形编辑器中的数据,通

PUw28资讯网——每日最新资讯28at.com

大家好,我是前端西瓜哥。PUw28资讯网——每日最新资讯28at.com

今天简单讲讲图形编辑器的显示属性值时,会遇到的格式转换问题。PUw28资讯网——每日最新资讯28at.com

编辑器 github 地址:PUw28资讯网——每日最新资讯28at.com

https://github.com/F-star/suikaPUw28资讯网——每日最新资讯28at.com

线上体验:PUw28资讯网——每日最新资讯28at.com

https://blog.fstars.wang/app/suika/PUw28资讯网——每日最新资讯28at.com

单位转换

图形编辑器中的数据,通过 UI 层进行展示时,可能不会直接将数据源的原始值展示出来,而是会额外进行单位的转换,变成另一种格式。PUw28资讯网——每日最新资讯28at.com

这里以简单而常见的弧度为例。PUw28资讯网——每日最新资讯28at.com

图形的旋转在数据源中,会用弧度(radian)表示。因为弧度更适合进行数学计算,且很多 API 比如 Math.sin(x) 都需要你提供弧度。PUw28资讯网——每日最新资讯28at.com

但在面向用户的 UI 层,我们通常会提供角度(degree),因为日常生活中人们更常使用,它更直观。PUw28资讯网——每日最新资讯28at.com

PUw28资讯网——每日最新资讯28at.com

但数据中我们还是要保存弧度的。PUw28资讯网——每日最新资讯28at.com

转换算法

我们需要明确的点是:PUw28资讯网——每日最新资讯28at.com

  • 数据源要用唯一格式,这样可以确保运算逻辑的一致性。比如旋转不建议即可以保存弧度,也可以保存角度。另外,尽量选择精度高的。
  • 如果有显示另一种格式的需求,你需要实现源格式转其他格式算法。比如弧度转角度显示到用户界面上;
  • 如果有修改其他格式然后修改源数据的需求,你需要实现其他格式转源数据的算法。
/** * 弧度转角度 */export function radian2Degree(radian: number) {  return (radian * 180) / Math.PI;}/** * 角度转弧度 */export function degree2Radian(degree: number) {  return (degree * Math.PI) / 180;}

需要注意,格式的转换通常会丢失一些精度的。PUw28资讯网——每日最新资讯28at.com

这里弧度和角度的转换就是一个例子。PUw28资讯网——每日最新资讯28at.com

圆周率是一个无限不循环小数,计算的时候,会对其丢掉一些精度再参与计算,最后的结果自然也丢失了精度。PUw28资讯网——每日最新资讯28at.com

这里给一下 UI 层实现思路,以 React 组件为例,核心实现大致如下:PUw28资讯网——每日最新资讯28at.com

const [radian, setRadian] = useState(0);useEffect(() => {  rect.onRotationChange((val) => {    // 从编辑器内核同步过来的状态    setRadian(val);  })});<NumberInput  label="旋转"  value={remainDecimal(radian2Degree(radian))}  onBlur={(e) => {    const degree =  e.target.value;    const radian = normalizeRadian(degree2Radian(degree));    rect.setRotation(radian);  }}/>

题外话,UI 层会直接更新编辑器中的状态,成功更新后通过事件订阅通知回 UI 层,同步状态。PUw28资讯网——每日最新资讯28at.com

弧度还是比较简单的场景。PUw28资讯网——每日最新资讯28at.com

像是复杂一点的属性,比如颜色值,通常要实现一个比较完善的拾色器,要支持多种格式,如RGBA、HSL、CMYK 等等,要实现的方法就更复杂也更多。PUw28资讯网——每日最新资讯28at.com

降低显示精度

UI 层不会显示全精度,意义不大。PUw28资讯网——每日最新资讯28at.com

比如 x 坐标的真实值是 52.24621202458749,但用户是不希望看到这么长的值的,他只是想知道这个点大概在什么位置。PUw28资讯网——每日最新资讯28at.com

所以我们最好做一个四舍五入,比如保留有限的有效位显示为 52.25。PUw28资讯网——每日最新资讯28at.com

需要注意的是,修改属性值时不用做降低精度再转为源格式,我们的数据源精度越高越好。PUw28资讯网——每日最新资讯28at.com

只在显示时做降低精度。PUw28资讯网——每日最新资讯28at.com

检验和补正

因为涉及到用户修改属性值,所以我们需要对用户的输入值进行处理,尝试得到一个合法值去修改属性。PUw28资讯网——每日最新资讯28at.com

简单的做法是 严格校验,比如对于数字类型,出现非数字字符,就直接认为非法值。PUw28资讯网——每日最新资讯28at.com

稍微好一点的是从字符串中提取符合格式的部分。PUw28资讯网——每日最新资讯28at.com

更人性化的是猜测用户想干嘛,做补全。比如对于 hex 格式的颜色值,用户只输入一个 3,我们给他补全为 33333。PUw28资讯网——每日最新资讯28at.com

PUw28资讯网——每日最新资讯28at.com

最后

画一张图总结一下。PUw28资讯网——每日最新资讯28at.com

PUw28资讯网——每日最新资讯28at.com

展示层可能和数据源的格式不同,显示时要做格式转换,然后降低精度,比如对于数字通常保留 1 到 5 个小数位就够了。PUw28资讯网——每日最新资讯28at.com

修改非源格式要做校验和补正,然后转回数据源格式保存起来。保存成功后再把新值传递到 UI 层。PUw28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12675-0.html图形编辑器开发:属性显示与格式转换

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 30 个有用的 JavaScript 代码片段(下)

下一篇: veImageX 演进之路:Web 图片加载提速50%

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    &copy;自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。&ldquo;提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top