使用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开发利器以及相关的教程,帮助你在开发.调试.集成和发布过程极大地提高效 ...
随机推荐
- Struts2的类型转换(上)
传统的类型转换.(略) Struts2中提供了内置的基本的类型转换器,可以实现基本类型的自动转换,包括: Integer, Float, Double, Decimal Date and Dateti ...
- XJOI1559树转二叉树
树转二叉树 将一棵树转化成二叉树. 输入格式: 输入的信息,第一行一个数n,(n<=1000)是树的结点数,以下n行,第i+1行是第i个结点的信息,第一个整数,是该结点的特征数值,后列出所有孩子 ...
- CDIF:基于JSON的SOA软件框架
通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...
- 老李分享:android app自动化测试工具合集
老李分享:android app自动化测试工具合集 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
- CentOS下安装node
下载 wget https://nodejs.org/dist/v7.7.4/node-v7.7.4-linux-x64.tar.gz 解压 tar -zxvf node-v7.7.4-linux-x ...
- 06 Theory of Generalization
若H的断点为k,即k个数据点不能被H给shatter,那么k+1个数据点也不能被H给shatter,即k+1也是H的断点. 如果给定的样本数N是大于等于k的,易得mH(N)<2N,且随着N的增大 ...
- GreenDao与Rx的完美搭配
作为Android开发者,一定不会对 GreenDao 和 ReactiveX 陌生. GreenDao 号称Android最快的关系型数据库 ReactiveX Rx是一个编程模型,目标是 ...
- 【one day one linux】find 用法详解小记
find命令的功能很强大,查找文件的选项很多,所以这是一个很实用并且很常用的linux命令.但是他有个缺点就是搜索的时候比较慢的.而与之相对的有一个locate命令. find的命令格式 find ...
- Redis技术分享
环境介绍: 开发环境: spring3+tomcat7+maven3+redis-3.0.7 运行环境: Linux 前言: 项目中引入redis背景: 项目中最初将科目.打印.利润表.资产负债表.现 ...
- Spring整合Quartz定时任务执行2次,Spring定时任务执行2次
Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...