C#绘制中国象棋棋盘
在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#绘制中国象棋棋盘相关推荐
- canvas绘制中国象棋棋盘
棋盘 board.html <!doctype html> <html><head><meta charset="gb2312"/> ...
- JAVA中用程序绘制国际象棋与中国象棋棋盘
JAVA API 中的绘制图形类的paint()方法,我们可以轻松绘制中国象棋与国际象棋的棋盘.详见代码: 一.中国象棋棋盘代码 import java.awt.Font; import java.a ...
- 中国象棋棋盘java_java绘制国际象棋与中国象棋棋盘
JAVA API 中的绘制图形类的paint()方法,我们可以轻松绘制中国象棋与国际象棋的棋盘.详见代码: 一.中国象棋棋盘代码 import java.awt.Font; import java.a ...
- 用turtle画中国象棋棋盘
刚刚学习了<Python入门教程(一)--Python语言基础视频课程>(http://edu.51cto.com/course/12194.html) 中间有道作业就是用turtle画中 ...
- 如何用Python画一个中国象棋棋盘?
今天试着画了一个中国象棋棋盘! #绘制象棋盘 import turtle t=turtle.Pen() t.speed(100) def angle(x,y): t.penup() ...
- matlab识别中国象棋棋盘,一种基于图像处理的中国象棋识别系统及方法与流程
本发明涉及计算机图像识别技术,具体涉及一种基于图像处理的中国象棋识别系统及方法. 背景技术: 数字图像处理技术在机器感知领域应用十分广泛,主要目标是通过一些图像处理技术从图像中提取信息,该信息类似于人 ...
- 中国象棋程序的设计与实现(十)--棋盘的定义和绘制
中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等) 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝...
本篇简要介绍棋盘类的定义.棋盘的关键属性.棋盘绘制算法的骨架. 棋盘的详细绘制算法等内容,我们将在接下来的几篇进行详细介绍. 棋盘类的定义 public abstract class ChessBoa ...
- java中国象棋棋盘放置棋子,JAVA简易文字版中国象棋
大二时制作的JAVA简易文字版中国象棋,现在放出,希望大家喜欢! // Java core packages import java.awt.*; import java.awt.event.*; / ...
- 中国象棋棋盘c语言编程,中国象棋 C语言编程.ppt
中国象棋 C语言编程 双人对弈中国象棋 程序所负责内容介绍 计算机生成红黑双方以及棋盘. 各个棋子的移动. 当危险时显示被"将军". 分支思路 1.棋盘棋子的制作与输出 棋盘 走子 ...
- 中国象棋棋盘java_Java中国象棋博弈程序探秘[2]——棋盘的表示
棋盘的表示 转载请保留作者信息: 作者:88250 MSN & Gmail & QQ:DL88250@gmail.com 在象棋博弈程序中,首先我们要确定下棋盘-棋子的数据结构描述. ...
最新文章
- PHP遇到json解决的两个办法,转为数组,直接取值
- 3D游戏编程入门(十五)索引缓存
- Geoff Hinton:我反对谷歌军事项目,论文评审机制正在阻碍创新
- 新版XenCenter添加剪贴板共享功能
- 面试题目_数据分析SQL面试题目9套汇总
- CVPR | 历届CVPR最佳论文收录集锦
- 小米11终于来了,12月28日见!
- 字符编码乱码问题(servlet底层 编码大揭秘)
- 结对编程-四则运算生成
- MySql 存储过程 光标只循环一次
- 解析bt种子下载 java_使用Java解析Torrent文件(BT种子),基于使用Eclipse ECF中的org.eclipse.bittorrent方案...
- 中国省份、城市-身份证编码
- 项目经理要具备怎样的素质和能力?
- python面向对象编程思想_面向对象编程思想及其特点
- 微信PC扫码支付(五)-订单查询,关闭订单,下载对账单
- mac 重置mysql root密码_Mac下忘记Mysql root密码重置
- 2021辽宁省大学生程序设计竞赛 题解
- 一夜爆红吸粉千万“四位超级网红”背后的四大真相是什么呢?
- java程序调用百度Geocoding API逆地址解析通过经纬度查询位置
- 【论文解读】HIN2Vec: Explore Meta-paths in Heterogeneous Information Networks for Representation Learning