前言

可执行文件下载 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质量屋编制工具的更多相关文章

  1. 高阶篇:4.1)QFD质量功能展开-总章

    本章目的:了解QFD概念和作用,为FMEA打下基础. 1.QFD定义 质量功能展开QFD(Quality Function Deployment),是把顾客或市场的要求转化为设计要求.零部件特性.工艺 ...

  2. 来了解质量管理工具——质量屋(HOQ)

    质量屋(The House Of Quality),又名HOQ,它是质量功能配置(QFD)的核心.一般QFD的学习会涉及到.同时HOQ也是项目管理十大知识领域领域中质量管理工具中的一种,今天我们就来了 ...

  3. 使用 WordPress 插件模板开发高质量插件

    WordPress 插件样板是标准化的,有组织的,面向对象的基础,用于构建高品质的 WordPress 插件.样板遵循编码标准和文件标准,所以你不必自己学习这些,根据注释编写代码即可. 官方网站    ...

  4. Python 使用python-kafka类库开发kafka生产者&消费者&客户端

    使用python-kafka类库开发kafka生产者&消费者&客户端   By: 授客 QQ:1033553122       1.测试环境 python 3.4 zookeeper- ...

  5. 基于Struts2+Hibernate的朋友圈留言网站开发的质量属性

    在课堂上我们了解了质量高于功能,质量属性是指影响质量的相关因素,是对质量的描述.现在我们对基于SSH的交友网站开发的质量属性可以从以下几个方向进行分析: (1)可用性: 当错误发生时,使用可用性战术进 ...

  6. 基于SSH框架的网上书店系统开发的质量属性

    基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...

  7. Google的跨平台开发高质量原生 UI 的移动 SDK---Flutter免费且开源

    Flutter开发 https://www.cnblogs.com/zengfp/p/9927860.html Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台 ...

  8. (转)C++类库开发之导出类设计原则

    上一篇博客详细陈述了类库开发的各个知识点(http://blog.csdn.net/z702143700/article/details/45989993),本文将进一步陈述,对于类库开发过程中导出类 ...

  9. 极大提高Web开发效率的8个工具和建议(含教程)

    面对复杂的 Web 应用的开发,良好的流程和工具支持是必不可少的,它们可以让日常的开发工作更加顺畅.更加高效.本文介绍了6个Web开发利器以及相关的教程,帮助你在开发.调试.集成和发布过程极大地提高效 ...

随机推荐

  1. Struts2的类型转换(上)

    传统的类型转换.(略) Struts2中提供了内置的基本的类型转换器,可以实现基本类型的自动转换,包括: Integer, Float, Double, Decimal Date and Dateti ...

  2. XJOI1559树转二叉树

    树转二叉树 将一棵树转化成二叉树. 输入格式: 输入的信息,第一行一个数n,(n<=1000)是树的结点数,以下n行,第i+1行是第i个结点的信息,第一个整数,是该结点的特征数值,后列出所有孩子 ...

  3. CDIF:基于JSON的SOA软件框架

    通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...

  4. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  5. 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 ...

  6. 06 Theory of Generalization

    若H的断点为k,即k个数据点不能被H给shatter,那么k+1个数据点也不能被H给shatter,即k+1也是H的断点. 如果给定的样本数N是大于等于k的,易得mH(N)<2N,且随着N的增大 ...

  7. GreenDao与Rx的完美搭配

    作为Android开发者,一定不会对 GreenDao 和 ReactiveX 陌生. GreenDao   号称Android最快的关系型数据库 ReactiveX    Rx是一个编程模型,目标是 ...

  8. 【one day one linux】find 用法详解小记

    find命令的功能很强大,查找文件的选项很多,所以这是一个很实用并且很常用的linux命令.但是他有个缺点就是搜索的时候比较慢的.而与之相对的有一个locate命令. find的命令格式 find   ...

  9. Redis技术分享

    环境介绍: 开发环境: spring3+tomcat7+maven3+redis-3.0.7 运行环境: Linux 前言: 项目中引入redis背景: 项目中最初将科目.打印.利润表.资产负债表.现 ...

  10. Spring整合Quartz定时任务执行2次,Spring定时任务执行2次

    Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...