GoJs Pictures 官方介紹文檔

圖片

? ? ? 使用Picture類顯示圖像。?最常見的用法是使用URL字符串設置Picture.source屬性,以及通過GraphObject.desiredSize(圖對象的所需尺寸)獲取或通過設置GraphObject.width(圖對象的寬)和GraphObject.height(圖對象的高)這兩個屬性改變圖片參數。

? ? ? ?如果URL只是一個簡單的常量字符串,則可以將字符串作為參數直接傳遞給GraphObject.make,而不是分配給“source”屬性。?兩種方式都具有相同的效果。

? ? ? ? ?在這些簡單的演示,該代碼編程方式創建一個區域貼圖,并將其添加到圖中。 如果你了解模型和數據綁定,一般就不會以編程方式創建區域貼圖(節點或鏈接)。nodes or links

? ? ? ? ? 實際上,并不建議使用 $ 這個默認的符號,因為在Js 中,這個$太敏感。

 
  1. diagram.add(

  2. $(go.Part,

  3. $(go.Picture, "images/100x65.png")

  4. ));

圖片是可以拖拉,縮放,通過Delete刪除的,建議去官網?進行體驗。

? ? ? ? 但是,對于更復雜的控件,您可以將Picture.element設置為HTMLImageElement或HTML Canvas元素來進行處理。

Sizing

? ? ?如果您沒有設置圖片的GraphObject.desiredSize,它將獲得圖片的自然大小。 但是,當您將desiredSize設置為與自然大小不同時,
你還可以通過拉伸或壓縮圖片以使其適合你的需求。

? ? ?以下圖片均顯示100x65像素的小貓照片。

  • 第一張照片以自然尺寸顯示圖像。
  • 第二張圖片還以自然尺寸顯示圖像,但顯式設置了所需的尺寸。
  • 第三張圖片增加了圖片的大小,使圖像均勻展開。
  • 第四張圖片將100x65圖像壓縮成50x32.5空間 - 一半大小。 這也保持了圖像的原始寬高比。
  • 最后一張圖片將圖片大小設置為50x70,這會將寬高比更改為比原始更高更薄。

 
  1. diagram.add(

  2. $(go.Part, "Table",

  3. $(go.Picture, { source: "images/100x65.png", column: 0,

  4. margin: 2 }),

  5. $(go.TextBlock, "natural", { row: 1, column: 0 }),

  6. $(go.Picture, { source: "images/100x65.png", column: 1,

  7. width: 100, height: 65, margin: 2 }),

  8. $(go.TextBlock, "same size", { row: 1, column: 1 }),

  9. $(go.Picture, { source: "images/100x65.png", column: 2,

  10. width: 200, height: 130, margin: 2 }),

  11. $(go.TextBlock, "bigger", { row: 1, column: 2 }),

  12. $(go.Picture, { source: "images/100x65.png", column: 3,

  13. width: 50, height: 32.5, margin: 2 }),

  14. $(go.TextBlock, "smaller", { row: 1, column: 3 }),

  15. $(go.Picture, { source: "images/100x65.png", column: 4,

  16. width: 50, height: 70, margin: 2 }),

  17. $(go.TextBlock, "stretched", { row: 1, column: 4 })

  18. ));

? ? ? 加載可能需要一段時間。 在加載到足以知道其自然大小的時間之前,圖片可能具有錯誤的大小,例如0x0。 我們建議你指定desiredSize(或寬度和高度),以便在加載結束后,保持圖片的面板不必重新排列。

? ? ? ?對于您無法提前知道目標尺寸的情況,有其他方法比如拉伸圖像以適應給定的空間。

圖像拉伸

? ? ? ?您可以設置Picture.imageStretch屬性來控制繪制圖像的大小和寬高比,而不是始終通過拉伸或壓縮來滿足自己需求的尺寸。

? ? ? ?以下圖片演示了Picture.imageStretch的四個可能值。 這里的所有四張圖片的大小均為60x80,并顯示相同的100x65 PNG文件。 圖片也有淺綠色背景,用來顯示可能未使用的空間,未使用的部分也是圖片的一部分。

  • 第一張圖片演示了默認行為,可以向兩個方向拉伸。 請注意圖像如何變形以使其比應有的更窄。 但是,顯示了所有圖像。 由于圖像填充整個區域并且圖像不是半透明的,因此背景顏色不會顯示在任何地方。
  • 您可以在第二張圖片中看到,使用GraphObject.None的imageStretch,它如何只顯示整個小貓圖像的一小部分。 因為desiredSize小于圖像的自然尺寸,所以圖像的一部分被剪裁。
  • 第三張圖顯示了GraphObject.Uniform imageStretch如何確保顯示所有圖像,代價是減小比例并在側面或頂部和底部留下一些空白空間。 在這種情況下,由于自然圖像寬高比比可用的60x80寬高比寬,空白區域將位于頂部和底部。
  • 第四張圖片顯示了GraphObject.UniformToFill imageStretch如何確保整個區域被圖像占據,但并非所有圖像都被顯示,因為有些圖像可能會被剪裁在側面或頂部和底部。 這些圖像通常比使用Uniform imageStretch時具有更大的比例。 在這種情況下,必須剪裁的是圖像的兩側。
  • 最后,有一個單獨的部分包含原始圖像,自然大小,用于比較。
 
  1. diagram.add(

  2. $(go.Part, "Table",

  3. $(go.Picture, "images/100x65.png",

  4. { column: 0, width: 60, height: 80, margin: 2, background: "chartreuse",

  5. imageStretch: go.GraphObject.Fill }),

  6. $(go.TextBlock, "Fill", { row: 1, column: 0 }),

  7. $(go.Picture, "images/100x65.png",

  8. { column: 1, width: 60, height: 80, margin: 2, background: "chartreuse",

  9. imageStretch: go.GraphObject.None }),

  10. $(go.TextBlock, "None", { row: 1, column: 1 }),

  11. $(go.Picture, "images/100x65.png",

  12. { column: 2, width: 60, height: 80, margin: 2, background: "chartreuse",

  13. imageStretch: go.GraphObject.Uniform }),

  14. $(go.TextBlock, "Uniform", { row: 1, column: 2 }),

  15. $(go.Picture, "images/100x65.png",

  16. { column: 3, width: 60, height: 80, margin: 2, background: "chartreuse",

  17. imageStretch: go.GraphObject.UniformToFill }),

  18. $(go.TextBlock, "UniformToFill", { row: 1, column: 3 })

  19. ));

  20. ?
  21. // The original image sized naturally, for comparison

  22. diagram.add(

  23. $(go.Part, "Vertical",

  24. $(go.Picture, "images/100x65.png"),

  25. $(go.TextBlock, "Original image,\nsized naturally")

  26. ));

剪切圖像時,您可以使用Picture.imageAlignment屬性控制決定裁剪圖像的哪個部分。

剪裁

? ? ? ?如果您的圖片必須剪裁為幾何圖形,例如生成圓形圖像,則有兩個選項。 第一種是使用“框架”幾何體來隱藏部分圖像。 通常,此框架的背景顏色與圖表背景或節點背景顏色相同。 此方法不會更改圖片的真實大小,沒有實現透明處理圖片,并且單擊邊界中的任何位置將始終選擇圖片。

? ? ? ?第二種方法使用Panel.isClipping。 “Spot”面板上的此屬性允許主Shape的填充區域用作剪切區域而不是繪制的形狀。 此方法不會更改圖片的區域,但會影響對象的選取,只能選擇繪制的區域; 未繪制的圖像區域不能被選中。

對于第一種方式來說,區域 1 , 2 都是可以被選中的,第二種方式只有區域二可以被選中。

 
  1. diagram.layout = $(go.GridLayout);

  2. diagram.initialContentAlignment = go.Spot.Center;

  3. ?
  4. // Using a black "frame" geometry to hide part of the image.

  5. // Typically this frame is the same color as the Diagram background or the background of the Node.

  6. diagram.add(

  7. $(go.Part, "Spot",

  8. { scale: 2 },

  9. $(go.Picture, "../samples/images/55x55.png",

  10. {

  11. name: 'Picture',

  12. desiredSize: new go.Size(55, 55),

  13. background: 'red'

  14. }

  15. ),

  16. $(go.Shape,

  17. {

  18. strokeWidth: 0,

  19. stroke: null,

  20. geometryString: "f M0 0 L100 0 L100 100 L0 100 z M5,50a45,45 0 1,0 90,0a45,45 0 1,0 -90,0 z",

  21. width: 56,

  22. height: 56,

  23. fill: 'black'

  24. })

  25. )

  26. );

  27. ?
  28. // Using Panel.isClipping

  29. diagram.add(

  30. $(go.Part, "Spot",

  31. { isClipping: true, scale: 2 },

  32. $(go.Shape, "Circle", { width: 55, strokeWidth: 0 } ),

  33. $(go.Picture, "../samples/images/55x55.png",

  34. { width: 55, height: 55 }

  35. )

  36. )

  37. );

  38. ?
  39. // Using Panel.isClipping and also having a surrounding panel

  40. diagram.add(

  41. $(go.Part, "Spot",

  42. { scale: 2 },

  43. $(go.Shape, "Circle", { width: 65, strokeWidth: 0, fill: 'red' } ),

  44. $(go.Panel, "Spot",

  45. { isClipping: true },

  46. $(go.Shape, "Circle", { width: 55, strokeWidth: 0 } ),

  47. $(go.Picture, "../samples/images/55x55.png",

  48. { width: 55, height: 55 }

  49. )

  50. )

  51. )

  52. );

?

跨源圖片

? ? ? ?由于圖片由HTMLImageElements支持,因此它們必須遵守適用于圖像的相同跨源(CORS)規則。 如果您使用的圖像適用于CORS規則,則可能需要將Picture.sourceCrossOrigin屬性設置為返回適當值的函數。 如果提供了sourceCrossOrigin,則函數返回的值將用作任何構造的image.crossOrigin的值。

例:

 
  1. $(go.Picture,

  2. { width: 64, height: 64 },

  3. { sourceCrossOrigin: function(pict) { return "use-credentials"; } },

  4. new go.Binding("source", "path"))

? ? ? 要返回的常用值是“use-credentials”和“anonymous”,但其他情況可能需要其他值或條件值。 我們建議閱讀跨源資源共享文檔,以確定適合您情況的方法。

? ? ? ?如果您正在使用Diagram.makeImage,Diagram.makeImageData或Diagram.makeSvg,并且您看到空白或缺少圖像,則首先要研究與CORS相關的問題。

使用SVG作為圖片源

幾乎所有瀏覽器都接受SVG文件作為圖片源,但在許多瀏覽器中,您必須:

  • 將寬度和高度屬性分配給SVG元素。 這些值應該是整數。 (Firefox必備)
  • 為Picture元素指定所需的大小,該大小必須與其width和height屬性相同(Internet Explorer必需)。

第一個SVG元素具有在其SVG元素中指定的寬度和高度,并且還具有其期望的大小集。 它應該在大多數瀏覽器中顯示:

 
  1. <svg xmlns="http://www.w3.org/2000/svg"

  2. xmlns:xlink="http://www.w3.org/1999/xlink"

  3. width="580" height="580">

  4. ...

 
  1. diagram.add(

  2. $(go.Part, "Vertical",

  3. $(go.Picture, { desiredSize: new go.Size(580, 580), source: "images/tiger.svg" })

  4. ));

  5. diagram.scale = 0.5;

?

此SVG元素未在其SVG元素中指定width和height屬性,因此某些瀏覽器可能無法呈現它:

 
  1. <svg xmlns="http://www.w3.org/2000/svg"

  2. xmlns:xlink="http://www.w3.org/1999/xlink">

  3. ...

 
  1. diagram.add(

  2. $(go.Part, "Vertical",

  3. $(go.Picture, { source: "images/tiger-noWidthHeightSpecified.svg" })

  4. ));

  5. diagram.scale = 0.5;

?

?

工具:Google Translate

翻譯人員: Kindear

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎樣購買及安裝ssl安全證書

查找資料記錄&#xff0c;不是我的項目筆記 現在越來越多的網站都開始用安全鏈接了&#xff0c;在國外的話&#xff0c;如果不是一個安全鏈接&#xff0c;用戶很大程度上會拒絕使用&#xff0c;所有安全鏈接是未來的趨勢&#xff0c;樓主第一次配安全證書的時候&#xff0c;剛剛…

XmlViewResolver 和 ResourceBundleViewResolver

使用XmlViewResolver 如果視圖對象的 Bean 數目太多&#xff0c;那么直接在 smart-servlet.xml 文件中配置&#xff0c;勢必影響主配置文件的簡潔性。XmlViewResolver 和 BeanNameViewResolver 功能相似&#xff0c;唯一不同的是它可以將視圖 Bean 定義在一個獨立的 XML 文件中…

(轉載)Git使用教程:最詳細、最傻瓜、最淺顯、真正手把手教!

轉載自 Git使用教程 預警&#xff1a;因為詳細&#xff0c;所以行文有些長&#xff0c;新手邊看邊操作效果出乎你的預料&#xff09;一&#xff1a;Git是什么&#xff1f; Git是目前世界上最先進的分布式版本控制系統。 工作原理 / 流程&#xff1a; Workspace&#xff1a;工作…

soureTree中如何設置git 用戶名與密碼 SourceTree提交修改用戶詳細圖文方法

mac上軟件更新&#xff1a; 現在沒有網絡小模塊了&#xff0c;在同行右邊高級里面有默認用戶名刪除即可&#xff01;&#xff01;&#xff01;&#xff01; sourceTree 切換Git登錄用戶&#xff0c;之前在SourceTree提交遠程服務用的是同事的賬號&#xff0c;同事離職后賬號也…

shell 腳本 生成文件,文件名為日期時間

腳本如下 #/bin/bashfilename$(date %Y%m%d)_$(date %H%M%S) touch $filename.txt 其中 $() 表示括號中的 shell 命令的結果&#xff0c;所以 filename 是一個字符串&#xff0c;比如 20190714_111631&#xff0c;即 2019 年 7 月 14 日 11 點 16 分 31 秒。 然后第二行命令&am…

js利用HTML5的拖拽API做流程圖

上代碼 直接用看效果&#xff0c;學習一下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style type"text/css">#d1{width:800px;height:800px;border: 1…

Pots (BFS ? 輸出路徑)

題目鏈接&#xff1a;http://poj.org/problem?id3414 思路&#xff1a; 因為有六種操作&#xff0c;所以六種操作中合法的都加入隊列中BFS 如何去輸出路徑呢&#xff1f; 我們不妨設一個string數組&#xff0c;它的索引就和我們的步數有關&#xff0c;然后按順序輸出就可以了…

box-sizing的使用

box-sizing 人們慢慢的意識到傳統的盒子模型不直接&#xff0c;所以他們新增了一個叫做 box-sizing 的CSS屬性。當你設置一個元素為 box-sizing: border-box; 時&#xff0c;此元素的內邊距和邊框不再會增加它的寬度。這里有一個與前一頁相同的例子&#xff0c;唯一的區別是兩…

vue-router的hash模式和history模式,

hash模式背后的原理是onhashchange事件,可以在window對象上監聽這個事件: window.onhashchange function(event){ console.log(event.oldURL, event.newURL); let hash location.hash.slice(1); document.body.style.color hash; } 上面的代碼可以通過改變hash來改變頁面字體…

更新node最新版本方法和 npm install -g n 運行錯誤

使用xshell連接linux服務器后&#xff0c;首先輸入node -v查看當前使用的版本 如果上面查看的版本比較低&#xff0c;則可以開始升級 清除npm cache 升級之前還需要安裝n模塊&#xff0c;n模塊是專門用來管理nodejs的版本 輸入npm install -g n n模塊安裝完成之后&#x…

vue-router的路由

路由和組件是有區別的&#xff1a;組件一般是在同一個頁面的不同模塊&#xff0c;但是路由是直接切換到另一個頁面&#xff0c;之前的頁面銷毀。 App.vue中的router-view會渲染頂級路由匹配到的組件。組件內部嵌套的router-view會渲染子路由匹配到的組件。 當路由跳轉的時候&am…

mac上的更新node npm

查看當前node版本 $ node -v v8.9.4 清除node.js的cache(不確定有沒有必要) $ sudo npm cache clean -f Password: npm WARN using --force I sure hope you know what you are doing. 安裝工具n &#xff0c;這個工具是專門用來管理node.js版本的 $ sudo npm install -g …

電源芯片選擇DC/DC還是LDO?《轉》

這個取決于你的應用場合。比如用在升壓場合&#xff0c;當然只能用DC/DC&#xff0c;因為LDO是壓降型&#xff0c;不能升壓。另外看下各自的主要特點&#xff1a; DC/DC:效率高&#xff0c;噪聲大&#xff1b; LDO:噪聲低&#xff0c;靜態電流小&#xff1b; 所以如果是用在壓降…

Atom React或前端插件推薦

分享一些Atom個人在用的插件,喜歡請點贊 1. color-picker 取色工具 2. pigments 編輯器中直接查看代碼所代表的顏色&#xff0c;工具雖小但是很實用。 3. minimap 仿sublime text的縮略代碼查看&#xff0c;想找的地方一目了然。 4. highlight-selected 選擇某段代碼自動高…

Nike Kyrie 1 Performance Review

Traction – There has been many varying opinions on the Kyrie 1’s traction, and I don’t think any of them have been wrong. I’d say under the right conditions, the traction is excellent. I’ve experienced nothing but great traction out of them, but all o…

Tapable.plugin is deprecated. Use new API on `.hooks` instead

問題描述 在使用extract-text-webpack-plugin給webpack打包時出現報錯 Tapable.plugin is deprecated. Use new API on .hooks instead 1 問題原因 extract-text-webpack-plugin目前版本不支持webpack4。 解決方案 使用extract-text-webpack-plugin的最新的beta版 npm inst…

第二周進度總結

本周主要在完成假期作業&#xff0c;學習的時間大部分花在代碼上。完成了3個代碼的編譯。第一個是害死人不償命的(3n1)猜想。第二個是成績排名&#xff08;輸出成績最高和成績最低學生的姓名和學號&#xff09;。第三個是換個格式來輸出任一個不超過 3 位的正整數。這三個題目中…

webpack.optimize.CommonsChunkPulgin is not a constructor???請看CommonsChunkPlugin VS SplitChunksPlugin

webpack團隊人員臥薪嘗膽五個多月的時間終于帶來的webpack4&#xff0c;個人覺得webpack4帶來的最大優化便是對于懶加載塊拆分的優化&#xff0c;刪除了CommonsChunkPlugin&#xff0c;新增了優化后的SplitChunksPlugin&#xff0c;那么CommonsChunkPlugin的痛點在哪&#xff1…

多重表(廣義表)

在深入淺出數據結構系列前面的文章中&#xff0c;我們一直在討論“線性表”&#xff0c;其形式如下&#xff1a; 由a1,a2,a3,……a(n-1)個元素組成的序列&#xff0c;其中每一個元素ai(0<i<n)都是一個“原子”&#xff0c;“原子”的意思就是說元素本身是一個個體&#x…

簡單教你React父子組件間平級組件間傳值

國慶充電特輯&#xff1a; 堵車堵死&#xff0c;廢話不多說直接上菜。 1.父組件對子組件傳值 利用props屬性傳值 class Component extends React.Component {constructor (props) {super(props);}render() {return (<div><h1>I am {this.props.name}</h1>…