上篇我们已经绘制了EightDiagram的八种图案

C#使用GDI绘制EightDiagram_斯内科的博客-CSDN博客

洛书九宫方位

古人则是下北上南,右西左东。从洛书九宫图可以看出数、卦、方位一一对应关系:

一代表坎卦,位居正北方;二代表坤卦,位居西南方;三代表震卦,位居东方;

四代表巽卦,位居东南方;五代表中宫;六代表乾卦,位居西北方;

七代表兑卦,位居西方;八代表艮卦,位居东北方;九代表离卦,位居南方。

这里我们绘制九宫格,以及相应的方位等图形,以及点击某一处显示具体内容与事件

VS2017中新建窗体应用程序EightDiagramDemo

将默认的Form1重命名为FormNineGrid,窗体FormNineGrid设计如图

新建绘制图片与文字类DrawDiagramUtil.cs

DrawDiagramUtil类源代码如下:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace EightDiagramDemo
{/// <summary>/// 绘制八卦图操作类/// </summary>public class DrawDiagramUtil{/// <summary>/// 绘制某一个八卦图片/// 八卦的每一个符号都由9个小矩形组成,/// 实线由三个连续的宽度为40,高度为20的小矩形组成。虚线由两个宽度为40,高度为20的小矩形 与 中间的宽度和高度都为0的小矩形组成/// </summary>/// <param name="panel">显示的面板控件:面板宽度为200,高度为200</param>/// <param name="diagramChar">八卦中文描述</param>/// <param name="diagramIndex">坤为0,震为1,坎为2,兑为3,艮为4,离为5,巽为6,乾为7</param>/// <param name="color">颜色,【乾坎艮】为绿色,【巽离】为黄色,【坤震兑】为红色</param>public static void GenerateEightDiagramSymbol(Panel panel, string diagramChar, int diagramIndex, Color color){panel.BackgroundImage = null;//清除背景//面板宽度为200,高度为200Bitmap bitmap = new Bitmap(panel.Width, panel.Height);Graphics graphics = Graphics.FromImage(bitmap);//爻是按照从下往上的顺序:坤为0,震为1,坎为2,兑为3,艮为4,离为5,巽为6,乾为7.//阳爻:实线,由三个连续的宽度为40,高度为20的小矩形组成//阴爻:虚线,由两个宽度为40,高度为20的小矩形 与 中间的宽度和高度都为0的小矩形组成//因此 八卦的每一个符号都由9个小矩形组成int lineWidth1 = 0;int lineHeight1 = 0;int lineWidth2 = 0;int lineHeight2 = 0;int lineWidth3 = 0;int lineHeight3 = 0;if (diagramIndex == 1){lineWidth1 = 40;lineHeight1 = 20;}else if (diagramIndex == 2){lineWidth2 = 40;lineHeight2 = 20;}else if (diagramIndex == 3){lineWidth1 = 40;lineHeight1 = 20;lineWidth2 = 40;lineHeight2 = 20;}else if (diagramIndex == 4){lineWidth3 = 40;lineHeight3 = 20;}else if (diagramIndex == 5){lineWidth1 = 40;lineHeight1 = 20;lineWidth3 = 40;lineHeight3 = 20;}else if (diagramIndex == 6){lineWidth2 = 40;lineHeight2 = 20;lineWidth3 = 40;lineHeight3 = 20;}else if (diagramIndex == 7){lineWidth1 = 40;lineHeight1 = 20;lineWidth2 = 40;lineHeight2 = 20;lineWidth3 = 40;lineHeight3 = 20;}Rectangle[] rects = new Rectangle[9]{new Rectangle(40, 40, 40, 20), new Rectangle(80, 40, lineWidth3, lineHeight3), new Rectangle(120, 40, 40, 20),new Rectangle(40, 80, 40, 20), new Rectangle(80, 80, lineWidth2, lineHeight2), new Rectangle(120, 80, 40, 20),new Rectangle(40, 120, 40, 20), new Rectangle(80, 120, lineWidth1, lineHeight1), new Rectangle(120, 120, 40, 20),};//奇门遁甲八门中://开门,休门,生门是吉祥的;绿色标识//杜门和景门可以说是中性的,又是吉祥,有时应凶;黄色标识//死门,惊门,伤门是三个容易应凶、出凶的门;红色标识//开门在乾金宫,休门在坎水宫,生门在艮土宫,伤门在震木宫,//杜门在巽木宫,景门在离火宫,死门在坤土宫,惊门在兑金宫。graphics.FillRectangles(new SolidBrush(color), rects);graphics.DrawRectangles(new Pen(color), rects);SizeF sizeF = graphics.MeasureString(diagramChar, new Font("华文楷体", 25));graphics.DrawString(diagramChar, new Font("华文楷体", 25), new SolidBrush(Color.Black), 100 - sizeF.Width / 2, 170 - sizeF.Height / 2);graphics.Dispose();panel.BackgroundImage = bitmap;}/// <summary>/// 生成文字:中宫五/// </summary>/// <param name="panel"></param>/// <param name="diagramChar"></param>public static void GenerateFiveCenter(Panel panel, string diagramChar){panel.BackgroundImage = null;//清除背景//面板宽度为200,高度为200Bitmap bitmap = new Bitmap(panel.Width, panel.Height);Graphics graphics = Graphics.FromImage(bitmap);SizeF sizeF = graphics.MeasureString(diagramChar, new Font("华文楷体", 40));graphics.DrawString(diagramChar, new Font("华文楷体", 40, FontStyle.Bold), new SolidBrush(Color.Black), 100 - sizeF.Width / 2, 100 - sizeF.Height / 2);graphics.Dispose();panel.BackgroundImage = bitmap;}}
}

窗体FormNineGrid源程序如下

在窗体FormNineGrid的Load加载事件中显示

(忽略设计器自动生成的代码):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace EightDiagramDemo
{public partial class FormNineGrid : Form{public FormNineGrid(){InitializeComponent();}private void FormNineGrid_Load(object sender, EventArgs e){DrawDiagramUtil.GenerateEightDiagramSymbol(panel8, "坎一", 2, Color.Green);DrawDiagramUtil.GenerateEightDiagramSymbol(panel3, "坤二", 0, Color.Red);DrawDiagramUtil.GenerateEightDiagramSymbol(panel4, "震三", 1, Color.Red);DrawDiagramUtil.GenerateEightDiagramSymbol(panel1, "巽四", 6, Color.Yellow);DrawDiagramUtil.GenerateFiveCenter(panel5, "中宫五");DrawDiagramUtil.GenerateEightDiagramSymbol(panel9, "乾六", 7, Color.Green);DrawDiagramUtil.GenerateEightDiagramSymbol(panel6, "兑七", 3, Color.Red);DrawDiagramUtil.GenerateEightDiagramSymbol(panel7, "艮八", 4, Color.Green);DrawDiagramUtil.GenerateEightDiagramSymbol(panel2, "离九", 5, Color.Yellow);}}
}

九宫方位运行如图:

C#使用GDI绘图九宫格与方位相关推荐

  1. C#使用GDI绘图九宫格与方位(2)增加点击查看详细,接上篇

    上一篇我们已经绘制了九宫格与方位的显示 C#使用GDI绘图九宫格与方位_斯内科的博客-CSDN博客 这里我们为九宫格的每一个图片都增加Click事件,用于点击查看详细描述 新建窗体FormNineGr ...

  2. 使用bitblt提高GDI+绘图的效率(转)

    最近在做使用GDI+绘制K线界面发现传统的GDI+绘制方式效率比较低,根本无法满足K线界面及时刷新的速度要求. 所以做了个GDI+绘制图形界面的试验,改试验主要在一个600×600的区域内每隔10MS ...

  3. cimage和gdi绘图效率比较_GDI+和GDI绘图性能对比实验

    龙源期刊网 http://www.qikan.com.cn GDI+ 和 GDI 绘图性能对比实验 作者:王克茹 来源:<科技创新与应用> 2013 年第 25 期 摘 要:本文通过完全相 ...

  4. MFC中的GDI绘图

    MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...

  5. GDIDrawing3——GDI+绘图(三)

     1using System;  2using System.Drawing;  3using System.Collections;  4using System.ComponentModel;   ...

  6. MFC GDI绘图基础

    一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...

  7. C# GDI+ 绘图

    1 坐标系统 (1) 坐标原点:在窗体或控件的左上角,坐标为(0,0) (2) 正方向:X轴正方向为水平向右,Y轴正方向为竖直向下 (3) 单位:在设置时,一般以像素为单位,像素(Pixel)是由图像 ...

  8. MFC GDI+ 绘图

    MFC GDI+ 绘图 -------------------------- void CGDIplusTestView::OnDraw(CDC* /*pDC*/) { CGDIplusTestDoc ...

  9. VC++6.0中使用GDI+绘图(转载)

    VC++6.0中使用GDI+绘图 1.在VC++6.0中配置GDI+环境 1.1 下载GDI+库 VC++6.0中没有GDI+库.可以从http://www.crazy-bit.com/downloa ...

最新文章

  1. python考试pass or fail_请问老师为什么我输入的数据,预期结果是pass,我的预期因该是“fail”...
  2. LVS+keepalived 实现高可用与负载均衡实施方案
  3. 高压小功率三极管 MFV13001
  4. 平面设计师如何掌握色彩心理学(实用技巧)
  5. python中html.replace()_HTML DOM replace() 方法
  6. 调用图灵机器人API实现简单聊天
  7. APUE学习笔记-守护进程的创建
  8. 单链表删除所有值为x的元素_双链表的基本实现与讲解(C++描述)
  9. Linux:程序设计
  10. try except Exception as e 检查异常
  11. 梦想还是要有的,万一实现了呢?
  12. modbus寄存器、功能码、报文结构解析
  13. iPhone/iPad应用使用麦克风的开启和关闭
  14. 计算机基础知识赏花主观题,春光无限好,正是花开时 快收好这份赏花指南!...
  15. PHP 26个英文字母递增
  16. python矩阵变成图片_Python图片转换成矩阵,矩阵数据转换成图片
  17. 南京信息工程大学第十届程序设计大赛试题
  18. Java调用Zebra800条码打印机
  19. OBS使用WebRTC进行腾讯云推流播流
  20. 【Python秘籍】十进制整数与二进制数的转换

热门文章

  1. JDK 16 即将发布,看完这些新特性,我感觉已经学不动了..
  2. reg型和memory型数据
  3. NOJ-1205-活动安排
  4. Realtek网卡插网线不亮灯解决方案
  5. 人体最适宜的温度和湿度
  6. 醉逍遥显示无法更新服务器,醉逍遥
  7. nginx 集成lua操作mysql
  8. 最新《Python 高级运维自动化开发实战大师班》
  9. linux系统下添加中文字体,linux添加中文字体
  10. 《大话处理器》山寨机创新兵法