在C#绘制中国象棋棋盘是C#程序设计中GDI+的一个重要组成部分。这也是非常考验编程技巧的操作。在绘制之前首先要对棋盘有一个完整的认识。下面是完成后的输出图案。

1.在制作过程中用到了背景图片如下:

2.棋盘的横竖交叉线的坐标如下图(棋盘横向、竖向都以50象素间距绘制)

3.更细的坐标分布如下图

完整的代码如下图

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Chinese_chessboard
{public partial class FrmMain : Form{public FrmMain(){InitializeComponent();}private void FrmMain_Paint(object sender, PaintEventArgs e){if (!File.Exists(Application.StartupPath + @"\" + "bg.jpg")){MessageBox.Show("请把素材中的bg.jpg图片文件放到可执行程序相同文件夹中,并重新启动程序!", "提示"); Application.Exit();}Console.WriteLine("C#编程交流群:485532597");Graphics g = e.Graphics;  // 获取一个Graphics对象g.Clear(Color.Coral);     //用珊瑚色清除窗体Font font1 = new Font("黑体", 25, FontStyle.Regular);int s = (int)(font1.Size / 0.6);int s2 = (int)font1.Height;Image img = Image.FromFile("bg.jpg");g.DrawImage(Image.FromFile(Application.StartupPath + @"\" + "bg.jpg"), 10, 10, 430, 480);       //绘制背景图g.DrawRectangle(new Pen(Color.Black, 3), new Rectangle(new Point(20, 20), new Size(410, 460)));  //绘制框图Pen pen = new Pen(Color.Black, 1);//绘制水平线for (int i = 0; i < 10; i++){g.DrawLine(pen, new Point(25, 25 + (i * 50)), new Point(425, 25 + (i * 50)));}//绘制垂直线for (int i = 0; i < 9; i++){g.DrawLine(pen, new Point(25 + (i * 50), 25), new Point(25 + (i * 50), 225));g.DrawLine(pen, new Point(25 + (i * 50), 275), new Point(25 + (i * 50), 475));}//return;//绘制将士位置斜线g.DrawLine(pen, new Point(175, 25), new Point(275, 125));g.DrawLine(pen, new Point(275, 25), new Point(175, 125));g.DrawLine(pen, new Point(175, 375), new Point(275, 475));g.DrawLine(pen, new Point(175, 475), new Point(275, 375));//兵位(炮位)线,只画一个g.DrawLine(pen, new Point(30, 160), new Point(30, 170));g.DrawLine(pen, new Point(30, 170), new Point(40, 170));g.DrawLine(pen, new Point(30, 180), new Point(30, 190));g.DrawLine(pen, new Point(30, 180), new Point(40, 180));g.DrawString("楚 河", new Font("黑体", 25), Brushes.Black, new Point(50, 235));g.TranslateTransform(300, 235); //平移坐标轴g.RotateTransform(180);  //进行180度旋转g.DrawString("漢 界", new Font("黑体", 25), Brushes.Black, new Point(-100, -35));g.ResetTransform(); //坐标轴复位  this.DrawAngle(g, pen, new Point(125, 175), "all");this.DrawAngle(g, pen, new Point(425, 175), "left");this.DrawAngle(g, pen, new Point(225, 175), "all");this.DrawAngle(g, pen, new Point(425, 175), "left");this.DrawAngle(g, pen, new Point(325, 175), "all");this.DrawAngle(g, pen, new Point(425, 175), "left");this.DrawAngle(g, pen, new Point(75, 125), "all");this.DrawAngle(g, pen, new Point(375, 125), "all");this.DrawAngle(g, pen, new Point(25, 325), "right");this.DrawAngle(g, pen, new Point(125, 325), "all");this.DrawAngle(g, pen, new Point(225, 325), "all");this.DrawAngle(g, pen, new Point(325, 325), "all");this.DrawAngle(g, pen, new Point(425, 325), "left");this.DrawAngle(g, pen, new Point(75, 375), "all");this.DrawAngle(g, pen, new Point(375, 375), "all");g.Dispose();           //释放对象}private  void DrawAngle(Graphics g,Pen pen, Point point,string str){Point p1 = new Point(point.X + 5, point.Y + 5);Point p2= new Point(point.X - 5, point.Y + 5);Point p3= new Point(point.X -5, point.Y - 5);Point p4 = new Point(point.X +5, point.Y -5);if(str=="right"||str=="all"){//p1  p4g.DrawLine(pen, p1, new Point(p1.X + 10, p1.Y));g.DrawLine(pen, p1, new Point(p1.X, p1.Y+10));g.DrawLine(pen, p4, new Point(p4.X + 10, p4.Y));g.DrawLine(pen, p4, new Point(p4.X, p4.Y-10));}if(str=="left" || str == "all"){//p2  p3g.DrawLine(pen, p2, new Point(p2.X - 10, p2.Y));g.DrawLine(pen, p2, new Point(p2.X, p2.Y+10));g.DrawLine(pen, p3, new Point(p3.X - 10, p3.Y));g.DrawLine(pen, p3, new Point(p3.X, p3.Y - 10));}}}
}

视频教程目录(已完结):

C#绘制中国象棋棋盘视频1
C#绘制中国象棋棋盘视频2
C#绘制中国象棋棋盘视频3
更多丰富的教学,请看
C#程序设计—系列视频教程

C#绘制中国象棋棋盘相关推荐

  1. canvas绘制中国象棋棋盘

    棋盘 board.html <!doctype html> <html><head><meta charset="gb2312"/> ...

  2. JAVA中用程序绘制国际象棋与中国象棋棋盘

    JAVA API 中的绘制图形类的paint()方法,我们可以轻松绘制中国象棋与国际象棋的棋盘.详见代码: 一.中国象棋棋盘代码 import java.awt.Font; import java.a ...

  3. 中国象棋棋盘java_java绘制国际象棋与中国象棋棋盘

    JAVA API 中的绘制图形类的paint()方法,我们可以轻松绘制中国象棋与国际象棋的棋盘.详见代码: 一.中国象棋棋盘代码 import java.awt.Font; import java.a ...

  4. 用turtle画中国象棋棋盘

    刚刚学习了<Python入门教程(一)--Python语言基础视频课程>(http://edu.51cto.com/course/12194.html) 中间有道作业就是用turtle画中 ...

  5. 如何用Python画一个中国象棋棋盘?

    今天试着画了一个中国象棋棋盘! #绘制象棋盘 import turtle      t=turtle.Pen() t.speed(100) def angle(x,y):     t.penup() ...

  6. matlab识别中国象棋棋盘,一种基于图像处理的中国象棋识别系统及方法与流程

    本发明涉及计算机图像识别技术,具体涉及一种基于图像处理的中国象棋识别系统及方法. 背景技术: 数字图像处理技术在机器感知领域应用十分广泛,主要目标是通过一些图像处理技术从图像中提取信息,该信息类似于人 ...

  7. 中国象棋程序的设计与实现(十)--棋盘的定义和绘制 中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等) 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝...

    本篇简要介绍棋盘类的定义.棋盘的关键属性.棋盘绘制算法的骨架. 棋盘的详细绘制算法等内容,我们将在接下来的几篇进行详细介绍. 棋盘类的定义 public abstract class ChessBoa ...

  8. java中国象棋棋盘放置棋子,JAVA简易文字版中国象棋

    大二时制作的JAVA简易文字版中国象棋,现在放出,希望大家喜欢! // Java core packages import java.awt.*; import java.awt.event.*; / ...

  9. 中国象棋棋盘c语言编程,中国象棋 C语言编程.ppt

    中国象棋 C语言编程 双人对弈中国象棋 程序所负责内容介绍 计算机生成红黑双方以及棋盘. 各个棋子的移动. 当危险时显示被"将军". 分支思路 1.棋盘棋子的制作与输出 棋盘 走子 ...

  10. 中国象棋棋盘java_Java中国象棋博弈程序探秘[2]——棋盘的表示

    棋盘的表示 转载请保留作者信息: 作者:88250 MSN & Gmail & QQ:DL88250@gmail.com 在象棋博弈程序中,首先我们要确定下棋盘-棋子的数据结构描述. ...

最新文章

  1. PHP遇到json解决的两个办法,转为数组,直接取值
  2. 3D游戏编程入门(十五)索引缓存
  3. Geoff Hinton:我反对谷歌军事项目,论文评审机制正在阻碍创新
  4. 新版XenCenter添加剪贴板共享功能
  5. 面试题目_数据分析SQL面试题目9套汇总
  6. CVPR | 历届CVPR最佳论文收录集锦
  7. 小米11终于来了,12月28日见!
  8. 字符编码乱码问题(servlet底层 编码大揭秘)
  9. 结对编程-四则运算生成
  10. MySql 存储过程 光标只循环一次
  11. 解析bt种子下载 java_使用Java解析Torrent文件(BT种子),基于使用Eclipse ECF中的org.eclipse.bittorrent方案...
  12. 中国省份、城市-身份证编码
  13. 项目经理要具备怎样的素质和能力?
  14. python面向对象编程思想_面向对象编程思想及其特点
  15. 微信PC扫码支付(五)-订单查询,关闭订单,下载对账单
  16. mac 重置mysql root密码_Mac下忘记Mysql root密码重置
  17. 2021辽宁省大学生程序设计竞赛 题解
  18. 一夜爆红吸粉千万“四位超级网红”背后的四大真相是什么呢?
  19. java程序调用百度Geocoding API逆地址解析通过经纬度查询位置
  20. 【论文解读】HIN2Vec: Explore Meta-paths in Heterogeneous Information Networks for Representation Learning

热门文章

  1. [BZOJ1061][NOI2008]志愿者招募(费用流神题单纯形裸题)
  2. Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
  3. 22个免费的UI界面设计工具、资源及网站
  4. 查看redis的Value值大小
  5. 美国签证面签准备材料清单
  6. NepCTF2022 Writeup
  7. Android 字符串求值工具(科学计算)
  8. 太飒了!这届乘风破浪的 IT 女神写得了代码、撕得掉年龄、跨得过行业!
  9. Python 唤起QQ对话框 QQ客服效果
  10. 人体工程学枕头行业调研报告 - 市场现状分析与发展前景预测