前言

可执行文件下载 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. 基于 Spring MVC 的开源测试用例管理系统以及开发自测的实践

    早前公司领导提出让开发自测,测试么也做做开发.当然了,为了保证自测质量,测试用例仍需测试提供,所以为了提高开发自测的效率和质量,我们开发了捉虫记.捉虫记是一个完整的Spring MVC项目,现已开源, ...

  2. Java开发—乘风破浪

    最近需要上线很多新的JAVA项目,然而很多JAVA的相关库都不太熟悉,项目实现起来遇到了不小阻力,熬了好几天夜.手头的基本完成了,因此打算好好来熟悉下java的相关工具库,需要借助你们,好好的在JAV ...

  3. JSP自定义不带属性和标签体的简单标签

    1. 新建HelloTag类 2. 添加额外的Jar包 (1). 右键项目 -> Build Path -> Configure Build Path -> Libraries -& ...

  4. Entity Framework细节追踪

    小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/shareto ...

  5. XML文档结构

    <?xml version="1.0" encoding="UTF-8"?> <books> <bool id="bk1 ...

  6. JavaScript高级内容:原型链、继承、执行上下文、作用域链、闭包

    了解这些问题,我先一步步来看,先从基础说起,然后引出这些概念. 本文只用实例验证结果,并做简要说明,给大家增加些印象,因为单独一项拿出来都需要大篇幅讲解. 1.值类型 & 引用类型 funct ...

  7. 一些IO流的知识

    IO流: 输入流:输出流: 字节流:字符流:为了处理文字数据方便而出现的对象. 其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据) 只不过,通过字节流读取了相对应的字节数,没有对这些字节直 ...

  8. Sitemesh 3 配置和使用(最新)

    Sitemesh 3 配置和使用(最新) 一 Sitemesh简介 Sitemesh是一个页面装饰器,可以快速的创建有统一外观Web应用 -- 导航 加 布局 的统一方案~ Sitemesh可以拦截任 ...

  9. Python 装饰器装饰类中的方法

    title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...

  10. http协议的八种请求类型

    GET:向特定的资源发出请求. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件).数据被包含在请求体中.POST请求可能会导致新的资源的创建和/或已有资源的修改. OPTIONS: ...