AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

圖形編輯器開發:屬性顯示與格式轉換

來源: 責編: 時間:2023-10-10 18:30:15 282觀看
導讀大家好,我是前端西瓜哥。今天簡單講講圖形編輯器的顯示屬性值時,會遇到的格式轉換問題。編輯器 github 地址:https://github.com/F-star/suika線上體驗:https://blog.fstars.wang/app/suika/單位轉換圖形編輯器中的數據,通

rTd28資訊網——每日最新資訊28at.com

大家好,我是前端西瓜哥。rTd28資訊網——每日最新資訊28at.com

今天簡單講講圖形編輯器的顯示屬性值時,會遇到的格式轉換問題。rTd28資訊網——每日最新資訊28at.com

編輯器 github 地址:rTd28資訊網——每日最新資訊28at.com

https://github.com/F-star/suikarTd28資訊網——每日最新資訊28at.com

線上體驗:rTd28資訊網——每日最新資訊28at.com

https://blog.fstars.wang/app/suika/rTd28資訊網——每日最新資訊28at.com

單位轉換

圖形編輯器中的數據,通過 UI 層進行展示時,可能不會直接將數據源的原始值展示出來,而是會額外進行單位的轉換,變成另一種格式。rTd28資訊網——每日最新資訊28at.com

這里以簡單而常見的弧度為例。rTd28資訊網——每日最新資訊28at.com

圖形的旋轉在數據源中,會用弧度(radian)表示。因為弧度更適合進行數學計算,且很多 API 比如 Math.sin(x) 都需要你提供弧度。rTd28資訊網——每日最新資訊28at.com

但在面向用戶的 UI 層,我們通常會提供角度(degree),因為日常生活中人們更常使用,它更直觀。rTd28資訊網——每日最新資訊28at.com

rTd28資訊網——每日最新資訊28at.com

但數據中我們還是要保存弧度的。rTd28資訊網——每日最新資訊28at.com

轉換算法

我們需要明確的點是:rTd28資訊網——每日最新資訊28at.com

  • 數據源要用唯一格式,這樣可以確保運算邏輯的一致性。比如旋轉不建議即可以保存弧度,也可以保存角度。另外,盡量選擇精度高的。
  • 如果有顯示另一種格式的需求,你需要實現源格式轉其他格式算法。比如弧度轉角度顯示到用戶界面上;
  • 如果有修改其他格式然后修改源數據的需求,你需要實現其他格式轉源數據的算法。
/** * 弧度轉角度 */export function radian2Degree(radian: number) {  return (radian * 180) / Math.PI;}/** * 角度轉弧度 */export function degree2Radian(degree: number) {  return (degree * Math.PI) / 180;}

需要注意,格式的轉換通常會丟失一些精度的。rTd28資訊網——每日最新資訊28at.com

這里弧度和角度的轉換就是一個例子。rTd28資訊網——每日最新資訊28at.com

圓周率是一個無限不循環小數,計算的時候,會對其丟掉一些精度再參與計算,最后的結果自然也丟失了精度。rTd28資訊網——每日最新資訊28at.com

這里給一下 UI 層實現思路,以 React 組件為例,核心實現大致如下:rTd28資訊網——每日最新資訊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 層,同步狀態。rTd28資訊網——每日最新資訊28at.com

弧度還是比較簡單的場景。rTd28資訊網——每日最新資訊28at.com

像是復雜一點的屬性,比如顏色值,通常要實現一個比較完善的拾色器,要支持多種格式,如RGBA、HSL、CMYK 等等,要實現的方法就更復雜也更多。rTd28資訊網——每日最新資訊28at.com

降低顯示精度

UI 層不會顯示全精度,意義不大。rTd28資訊網——每日最新資訊28at.com

比如 x 坐標的真實值是 52.24621202458749,但用戶是不希望看到這么長的值的,他只是想知道這個點大概在什么位置。rTd28資訊網——每日最新資訊28at.com

所以我們最好做一個四舍五入,比如保留有限的有效位顯示為 52.25。rTd28資訊網——每日最新資訊28at.com

需要注意的是,修改屬性值時不用做降低精度再轉為源格式,我們的數據源精度越高越好。rTd28資訊網——每日最新資訊28at.com

只在顯示時做降低精度。rTd28資訊網——每日最新資訊28at.com

檢驗和補正

因為涉及到用戶修改屬性值,所以我們需要對用戶的輸入值進行處理,嘗試得到一個合法值去修改屬性。rTd28資訊網——每日最新資訊28at.com

簡單的做法是 嚴格校驗,比如對于數字類型,出現非數字字符,就直接認為非法值。rTd28資訊網——每日最新資訊28at.com

稍微好一點的是從字符串中提取符合格式的部分。rTd28資訊網——每日最新資訊28at.com

更人性化的是猜測用戶想干嘛,做補全。比如對于 hex 格式的顏色值,用戶只輸入一個 3,我們給他補全為 33333。rTd28資訊網——每日最新資訊28at.com

rTd28資訊網——每日最新資訊28at.com

最后

畫一張圖總結一下。rTd28資訊網——每日最新資訊28at.com

rTd28資訊網——每日最新資訊28at.com

展示層可能和數據源的格式不同,顯示時要做格式轉換,然后降低精度,比如對于數字通常保留 1 到 5 個小數位就夠了。rTd28資訊網——每日最新資訊28at.com

修改非源格式要做校驗和補正,然后轉回數據源格式保存起來。保存成功后再把新值傳遞到 UI 層。rTd28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-12675-0.html圖形編輯器開發:屬性顯示與格式轉換

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 30 個有用的 JavaScript 代碼片段(下)

下一篇: veImageX 演進之路:Web 圖片加載提速50%

標簽:
  • 熱門焦點
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • Flowable工作流引擎的科普與實踐

    一.引言當我們在日常工作和業務中需要進行各種審批流程時,可能會面臨一系列技術和業務上的挑戰。手動處理這些審批流程可能會導致開發成本的增加以及業務復雜度的上升。在這
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 攜眾多高端產品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數字娛樂領域最具知名度與影響力的年度盛會中國國際數碼互動娛樂展覽會(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領先的科
  • 華為開發者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發布最新一代鴻蒙 H
  • onebot M24巧系列一體機采用輕薄機身設計,現已在各平臺開售

    onebot M24 巧系列一體機目前已在線上線下各平臺同步開售。onebot M24 巧系列采用一體化輕薄機身設計,最薄處為 10.15mm,擁有寶石紅、午夜藍、石墨綠、雅致
Top