摘要:结合自己的经验,采用绘图,设计思路就是将所有元素都有独立的图层。用户可自定义图层,绘制自定义图层内容,支持对目标图层元素的移动放大缩小,置顶和置底显示等功能。同时这个组件支持导出图层元素数据,并将数据加载还原图形显示等功能。
最近接了个小项目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、泳道图层
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123993.html
摘要:而浏览器渲染与密切相关,因此只有了解其中工作原理才能让更好地工作。浏览器也称为布局渲染方式瓦片渲染流畅动画总结参考文章浏览器用户界面包括地址栏前进后退按钮书签菜单等。浏览器引擎在用户界面和渲染引擎之间传送指令。渲染引擎负责显示请求的内容。 singsong: 文本是自己看了一些不错资料整理出来的,对该知识点感兴趣的同学可以查看参考文章小节。 ✏️最新内容请以github上的为准❗️ 为...
摘要:当用户滚动页面时,合成线程会通知主线程更新页面中最新可见部分的位图。但是,如果主线程响应地不够快,合成线程不会保持等待,而是马上绘制已经生成的位图,还没准备好的部分用白色进行填充。 动画做多了,自然就要考虑性能,我打算出一个系列的日志,详细的讲解一下网页动画性能相关的知识,如果你已经可以运用css3 canvas来做动画,可以来参考一下。 目前我做的最复杂的动画就是360搜索中PC端的...
阅读 3546·2023-04-26 02:05
阅读 1912·2021-11-19 11:30
阅读 4153·2021-09-30 09:59
阅读 3148·2021-09-10 10:51
阅读 2571·2021-09-01 10:30
阅读 1442·2021-08-11 11:20
阅读 2574·2019-08-30 15:54
阅读 525·2019-08-30 10:49