最近接了个小项目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、泳道图层

GDI绘制Winform工作流组件、具有独立图层的增删处理、防PPT效果的更多相关文章

  1. winform快速开发平台 -> 工作流组件(仿GooFlow)

    对于web方向的工作流,一直在用gooflow对于目前我的winform开发平台却没有较好的工作流组件.  针对目前的项目经验告诉我们.一个工作流控件是很必要的. 当然在winform方面的工作流第三 ...

  2. GDI绘制时钟效果,与系统时间保持同步,基于Winform

    2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...

  3. WinForm 工作流设计 1

    从事软件行业那么多年,一直很少写博.很多技术,长时间不用都慢慢淡忘. 把自己学到的用笔记下来,可以巩固和发现不足,也可以把自己对技术的一些 理解,分享出来供大家批评指正. 废话不多说,进入正题.工作流 ...

  4. 分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。

    前面3个月的时间内,这些.NET开源项目你知道吗?系列文章已经发表了3篇,共计45个平时接触比较少,曾经默默无闻的.NET开源项目,展示给大家,当然不是每个人都能用得上,但也的确是有些人用了,反响还不 ...

  5. 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web

    实例演示使用RDIFramework.NET 框架的工作流组件 进行业务流程的定义—请假申请流程-Web 参考文章: RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系 ...

  6. 通过GDI+绘制 验证码

    只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...

  7. Mistral 工作流组件之一 概述

    Mistral的前世今生:  Mistral是Mirantis公司为Openstack开发的工作流组件,提供Workflow As a Service.典型的应用场景包括任务计划服务Cloud Cro ...

  8. C#利用GDI+绘制旋转文字等效果

    C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...

  9. C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤

    通过上面的效果截图可以看到,重绘后的MenuStrip和ContextMenuStrip可以添加自己的LOGO信息,实现了类似OFFICE2007的菜单显示效果. .NET对菜单控件的绘制提供了一个抽 ...

随机推荐

  1. HCNP Routing&Switching之BGP基础

    前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...

  2. Data Interoperability Tools

    这里的工具貌似没有对应函数~~~

  3. 深入理解java中main方法

    理解main方法语法 深入理解main方法: 解释main方法的形式:public static void main(String[] args){} main方法调用者:虚拟机 java虚拟机需要调 ...

  4. 【Java虚拟机9】类加载器之命名空间详解

    前言 前面介绍类加载器的时候,介绍了一下命名空间这个概念.今天就通过一个例子,来详细了解一下[类加载器的命名空间].然后通过这个例子,我们可以总结一下双亲委托模型的好处与优点. 例1(不删除class ...

  5. 【UE4 C++ 基础知识】<3> 基本数据类型、字符串处理及转换

    基本数据类型 TCHAR TCHAR就是UE4通过对char和wchar_t的封装 char ANSI编码 wchar_t 宽字符的Unicode编码 使用 TEXT() 宏包裹作为字面值 TCHAR ...

  6. Machine learning (8-Neural Networks: Representation)

    1.Non-linear Hypotheses 2.Neurons and the Brain 从某种意义上来说,如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,也许这将 ...

  7. 洛谷 P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈

    链接: P2252 [SHOI2002]取石子游戏|[模板]威佐夫博弈 前言: 第一眼大水题,第二眼努力思考,第 N 眼我是大水逼. 题意: 不看题目标题都应该能看出来是取石子类的博弈论. 有两堆石子 ...

  8. 文献翻译|Design of True Random Number Generator Based on Multi-stage Feedback Ring Oscillator(基于多级反馈环形振荡器的真随机数发生器设计)

    基于多级反馈环形振荡器的真随机数发生器设计 摘要 真随机数生成器(trng)在加密系统中起着重要的作用.本文提出了一种在现场可编程门阵列(FPGA)上生成真随机数的新方法,该方法以 多级反馈环形振荡器 ...

  9. (转)linux下错误的捕获:errno和strerror的使用,以及perror和strerror的区别

    经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...

  10. hdu 2571 命运(水DP)

    题意: M*N的grid,每个格上有一个整数. 小明从左上角(1,1)打算走到右下角(M,N). 每次可以向下走一格,或向右走一格,或向右走到当前所在列的倍数的列的位置上.即:若当前位置是(i,j), ...