摘要:結合自己的經驗,采用繪圖,設計思路就是將所有元素都有獨立的圖層。用戶可自定義圖層,繪制自定義圖層內容,支持對目標圖層元素的移動放大縮小,置頂和置底顯示等功能。同時這個組件支持導出圖層元素數據,并將數據加載還原圖形顯示等功能。
最近接了個小項目10K。用了2個下班時間寫完,共花費了6-7個小時完成。如有同類需求的可以與本人聯系,QQ:120772981
功能目標:
需要寫一個仿PPT畫泳道圖的組件。之前寫過工作流的組件,其實這個跟工作流組件基本一樣,所以寫這個也得心應手。PPT的效果圖如下,
?
在C#winform里面想要及支持手動拖拽又要只支持自定義的一些功能, 很會想到拖拽控件,控件直接放圖片不就的了嗎?這樣也可以, 但后續控件元素越來越大的時候,可能會出現控件閃屏,嚴重的可能性能都跟不上,再有如果用戶需要放大和縮小,里面有幾百個元素,是不是很崩潰。?
隨著元素的增加以及用戶的操作邏輯增加,可能會直至跟不上用戶操作的節奏 。會很托執行效率。
結合自己的經驗,采用GDI繪圖,設計思路就是將所有元素都有獨立的圖層。 用戶可自定義圖層,繪制自定義圖層內容,支持對目標圖層元素的移動、放大縮小,置頂和置底顯示等功能。同時這個組件支持導出JSON圖層元素數據,并將Json數據加載還原圖形顯示等功能。
估計是多年經驗,寫起來這個設計思想有得到了進一步的升華。感覺用這個思想寫photoshop問題不大(我吹牛B呢,沒費用搞起來沒啥意義。)。
具體實現界面如下:
1、矩形框
首先我們數帶圓角的組件 用戶的矩形框追加圓角屬性,搞B/S方面的同學應該都知道CornerRadius或Radius 是圓角屬性,如果我們采用圖片的方式,在拉伸的時候圖形元素就會產生嚴重變形。所以我們通過
原始的GDI加能夠很好的解決這個問題,
?
?
?
通過鼠標可任意移動圖層位置,同時,通過鍵盤上、下、左、右按鍵用戶也能夠最圖層進行微調。
針對很多開發者說GDI繪圖慢的問題, C# 的GDI繪圖本身并不慢,慢的根本原因還是在于能力不足所致。找找自身代碼原因,有些繪圖能局部刷新,就自己應該刷那就刷哪,你非得全刷,再有你的處理明明已經阻塞了你還要繼續同步執行。不慢才怪。目前我的這個組件放100個圖層,鼠標任意拖拽任意移動,CPU占用率不足5%。?
最后你來個總結,c# GDI不行。建議別聽風是雨。先深入了解一下他的機制。 最主要的就是這個繪圖設計思想。
對于這個組件支持文字自動換行。設置字體顏色,邊框顏色以及里面的背景顏色。
外邊框的四個小放款是放大和所有按鈕。鼠標點擊是追加了ReSize光標,提升用戶指導性操作。
?
?
1、判斷框
跟矩形框相同,用戶也可以對其進行移動、調節尺寸,設置輸入內容、設置邊框顏色,背景顏色,字體大小,字體顏色等屬性。
?
?
?每個圖形元素都是一個獨立的圖層,用戶可以對其設置置頂,和置底。如下圖:
?
?置于底層
?
?
3、文檔框
?所有的基礎屬性都集成一個基類元素,基類元素均包含以下操作, 用戶也可以對其進行移動、調節尺寸,設置輸入內容、設置邊框顏色,背景顏色,字體大小,字體顏色等屬性。
?
?
?4、平行四邊形框
?
5、泳道圖層
?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123993.html
摘要:而瀏覽器渲染與密切相關,因此只有了解其中工作原理才能讓更好地工作。瀏覽器也稱為布局渲染方式瓦片渲染流暢動畫總結參考文章瀏覽器用戶界面包括地址欄前進后退按鈕書簽菜單等。瀏覽器引擎在用戶界面和渲染引擎之間傳送指令。渲染引擎負責顯示請求的內容。 singsong: 文本是自己看了一些不錯資料整理出來的,對該知識點感興趣的同學可以查看參考文章小節。 ??最新內容請以github上的為準?? 為...
摘要:當用戶滾動頁面時,合成線程會通知主線程更新頁面中最新可見部分的位圖。但是,如果主線程響應地不夠快,合成線程不會保持等待,而是馬上繪制已經生成的位圖,還沒準備好的部分用白色進行填充。 動畫做多了,自然就要考慮性能,我打算出一個系列的日志,詳細的講解一下網頁動畫性能相關的知識,如果你已經可以運用css3 canvas來做動畫,可以來參考一下。 目前我做的最復雜的動畫就是360搜索中PC端的...
閱讀 3564·2023-04-26 02:05
閱讀 2003·2021-11-19 11:30
閱讀 4201·2021-09-30 09:59
閱讀 3175·2021-09-10 10:51
閱讀 2604·2021-09-01 10:30
閱讀 1470·2021-08-11 11:20
閱讀 2615·2019-08-30 15:54
閱讀 563·2019-08-30 10:49