使用NetronGraphLib类库开发Qfd质量屋编制工具
前言
可执行文件下载 QfdHouse-exe.zip
因项目需要做了一个质量功能配置(Quality Function Deployment 简称Qfd)的质量屋编制工具软件,本软件是在发布一个免费开源软件-- PAD流程图绘制软件PADFlowChart基础之上做的,效果如下:

支持新建、保存、导出图片,自定义用户需求和技术特性,单元格点击切换关联矩阵程度和自关联矩阵的相关性。
开发中解决的问题
相信来这的人对Qfd是不感兴趣的,下面就把遇到的问题说一下。
如何设置图形的初始大小
1.在Shape类增加默认高度和宽度的属性
/// <summary>
/// 默认宽度
/// </summary>
private float mDefaultWidth = 0f; /// <summary>
/// 默认高度
/// </summary>
private float mDefaultHeigh = 0f;
/// <summary>
/// 默认宽度
/// </summary>
[GraphMLData]public float DefaultWidth
{
get { return mDefaultWidth; }
set { mDefaultWidth = value; }
}
/// <summary>
/// 默认高度
/// </summary>
[GraphMLData]
public float DefaultHeigh
{
get { return mDefaultHeigh; }
set { mDefaultHeigh = value; }
}
2.在TableShape类中初始化
public TableShape() : base()
{
this.Init();
this.InitTestData3();
BindingEventHandler();
base.DefaultWidth = ;
base.DefaultHeigh = ;
}
3.修改GraphControl的DrawShapeMouseUp(PointF p)函数
private void DrawShapeMouseUp(PointF p)
{
Cursor = System.Windows.Forms.Cursors.Default; float t_left = (mMouseDownPoint.X < p.X ? mMouseDownPoint.X : p.X);
float t_right = (mMouseDownPoint.X >= p.X ? mMouseDownPoint.X : p.X);
float t_top = (mMouseDownPoint.Y < p.Y ? mMouseDownPoint.Y : p.Y);
float t_bottom = (mMouseDownPoint.Y >= p.Y ? mMouseDownPoint.Y : p.Y); if (t_right - t_left < )
{
// t_right = t_left + mDefaultShapeWidth;
t_right = t_left + Math.Max(mDefaultShapeWidth, mshapeObject.DefaultWidth);
} if (t_bottom - t_top < )
{
//t_bottom = t_top + mDefaultShapeHeight;
t_bottom = t_top + Math.Max(mDefaultShapeHeight, mshapeObject.DefaultHeigh);
}
mshapeObject.Rectangle = RectangleF.FromLTRB(t_left, t_top, t_right, t_bottom); Invalidate(); EndDrawShapeWithMouse();
}
注释掉的是原来的代码
如何导出图形到图片格式
1. 在FlowChartForm.cs中增加保存图形图片的方法
public bool SaveShapeImage()
{
if (graphControl.SelectedShapes.Count != )
{
MessageBox.Show("请选中一个图形");
return false;
} var fileName = string.Empty;
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.DefaultExt = ".jpg";
sfd.Filter = "jpg file(*.jpg)|*.jpg"; if (sfd.ShowDialog() == DialogResult.OK)
{
fileName = sfd.FileName;
}
else
{
return false;
}
}
var shape = graphControl.SelectedShapes[];
graphControl.SaveShapeImage(fileName, shape);
return true;
}
2.在GraphControl.cs中增加SaveShapeImage方法
public void SaveShapeImage(string path,Shape shape)
{
Image bmp = GetShapeImage(shape);
bmp.Save(path);
} public Image GetShapeImage(Shape shape)
{
var oldRectangle = shape.Rectangle;
var newRectangle = new RectangleF(, , oldRectangle.Width, oldRectangle.Height);
shape.Rectangle = newRectangle;
Bitmap bmp = new Bitmap((int)shape.Rectangle.Width, (int)shape.Rectangle.Height, this.CreateGraphics()); using (Graphics g = Graphics.FromImage(bmp))
{
g.SmoothingMode = SmoothingMode.AntiAlias;
shape.Paint(g);
}
shape.Rectangle = oldRectangle;
Image.GetThumbnailImageAbort tCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
return bmp.GetThumbnailImage((int)shape.Rectangle.Width,(int)shape.Rectangle.Height, tCallback, IntPtr.Zero);
}
使用NetronGraphLib类库开发Qfd质量屋编制工具的更多相关文章
- 高阶篇:4.1)QFD质量功能展开-总章
本章目的:了解QFD概念和作用,为FMEA打下基础. 1.QFD定义 质量功能展开QFD(Quality Function Deployment),是把顾客或市场的要求转化为设计要求.零部件特性.工艺 ...
- 来了解质量管理工具——质量屋(HOQ)
质量屋(The House Of Quality),又名HOQ,它是质量功能配置(QFD)的核心.一般QFD的学习会涉及到.同时HOQ也是项目管理十大知识领域领域中质量管理工具中的一种,今天我们就来了 ...
- 使用 WordPress 插件模板开发高质量插件
WordPress 插件样板是标准化的,有组织的,面向对象的基础,用于构建高品质的 WordPress 插件.样板遵循编码标准和文件标准,所以你不必自己学习这些,根据注释编写代码即可. 官方网站 ...
- Python 使用python-kafka类库开发kafka生产者&消费者&客户端
使用python-kafka类库开发kafka生产者&消费者&客户端 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper- ...
- 基于Struts2+Hibernate的朋友圈留言网站开发的质量属性
在课堂上我们了解了质量高于功能,质量属性是指影响质量的相关因素,是对质量的描述.现在我们对基于SSH的交友网站开发的质量属性可以从以下几个方向进行分析: (1)可用性: 当错误发生时,使用可用性战术进 ...
- 基于SSH框架的网上书店系统开发的质量属性
基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...
- Google的跨平台开发高质量原生 UI 的移动 SDK---Flutter免费且开源
Flutter开发 https://www.cnblogs.com/zengfp/p/9927860.html Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台 ...
- (转)C++类库开发之导出类设计原则
上一篇博客详细陈述了类库开发的各个知识点(http://blog.csdn.net/z702143700/article/details/45989993),本文将进一步陈述,对于类库开发过程中导出类 ...
- 极大提高Web开发效率的8个工具和建议(含教程)
面对复杂的 Web 应用的开发,良好的流程和工具支持是必不可少的,它们可以让日常的开发工作更加顺畅.更加高效.本文介绍了6个Web开发利器以及相关的教程,帮助你在开发.调试.集成和发布过程极大地提高效 ...
随机推荐
- JavaWeb之HTTP协议
一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. ...
- python_21_线程+进程+协程
python_线程_进程_协程 什么是线程? -- os能够进行运算调度的最小单位,被包含在进程之中,是一串指令的集合 -- 每个线程都是独立的,可以访问同一进程下所有的资源 什么是进程? -- 每个 ...
- EDP转换IC NCS8801S:RGB/LVDS转EDP芯片
RGB/LVDS-to-eDP Converter1 Features Embedded-DisplayPort (eDP) Output 2-lane/4-lane eDP @ 1.62 ...
- UIScrollView的布局
一.UIScrollView的子控件布局不能跟其它的控件一样进行布局,因为UIScrollView会根据子控件计算出ContentSize的大小,那么我们应该如何进行布局呀. 遵循以下两点就行 1.参 ...
- quartus ii有符号数的问题(待完善)
1.有符号数是以补码的形式存储的,在modelsim仿真时,补码自动转换为有符号的十进制数. 2.关于截位的问题: 当只取寄存器中的其中m位时,这时候取得的数是按照无符号位来处理的? 3.reg型数据 ...
- [编织消息框架][JAVA核心技术]动态代理应用8-IRpcReceive实现
private static Map<Short, Map<Byte, Method>> RECEIVE_METHOD_INFO = new HashMap<>() ...
- oracle定时执行一个存储过程
首先需要新建存储过程 一 存储过程: create or replace procedure Insertdata is begin INSERT INTO tab_dayta select * fr ...
- 统计学习方法:KNN
作者:桂. 时间:2017-04-19 21:20:09 链接:http://www.cnblogs.com/xingshansi/p/6736385.html 声明:欢迎被转载,不过记得注明出处哦 ...
- Go语言及Web框架Beego环境
Go语言及Web框架Beego环境无脑搭建 [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1. ...
- Xamarin.Forms+Prism(3)—— 简单提示UI的使用
这次给大家介绍两个比较好用的提示插件,如成功.等待.错误提示. 准备: 1.新建一个Prism Xamarin.Forms项目: 2.右击解决方案,添加NuGet包: 1)Acr.UserDialog ...