因为研究CodeCombat上的最后一题,自己尝试分解题目,然后想到需要画网格,还有最优化的方法

源代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DrawGrid
{
public partial class Form1 : Form
{
int multiple = ;
int width = ;
int height = ;
int w = ;
int h = ;
Pen bluePen = new Pen(Color.Black); public Form1()
{
InitializeComponent();
} private void Form1_Paint(object sender, PaintEventArgs e)
{
Console.WriteLine("Form长:{0},宽:{1}", this.Width, this.Height);
this.Multiple();
DrawGrid(width, height, w, h, e); List<Rectangle> l = new List<Rectangle>();
Rectangle r;
r = new Rectangle(, w, * w, h); l.Add(r);
r = new Rectangle( * w, , * w, h); l.Add(r);
r = new Rectangle( * w, * w, * w, h); l.Add(r);
foreach (Rectangle r1 in l)
{
e.Graphics.FillRectangle(new SolidBrush(Color.Black), r1);
}
} /// <summary>
/// 将比例放大
/// </summary>
private void Multiple()
{
width = width * multiple;
height = height * multiple;
w = w * multiple;
h = h * multiple;
} private void Form1_MouseDown(object sender, MouseEventArgs e)
{
Console.WriteLine("X={0},Y={1}", e.X, e.Y);
} /// <summary>
/// 画网格
/// </summary>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="w"></param>
/// <param name="h"></param>
private void DrawGrid(int width, int height, int w, int h, PaintEventArgs e)
{
Point p1 = new Point();
Point p2 = new Point(); p1.X = ; p2.X = width;
for (int y = ; y <= height; y = y + h)
{
p1.Y = y; p2.Y = y;
DrawLine(p1, p2, e);
}
p1.Y = ; p2.Y = height;
for (int x = ; x <= width; x = x + w)
{
p1.X = x; p2.X = x;
DrawLine(p1, p2, e);
}
} /// <summary>
/// 画直线
/// </summary>
/// <param name="p1"></param>
/// <param name="p2"></param>
private void DrawLine(Point p1, Point p2, PaintEventArgs e)
{
e.Graphics.DrawLine(bluePen, p1, p2);
}
}
}

自己的测试图片如上图,是一个5*4的网格;

有三个地方已经被填充了。

剩下空白的地方,需可以用矩形填充。

考虑使用最少的矩形填充,应该就是4个矩形了。一目了然。

不过,如果考虑用程序实现的话,就复杂了。以后再尝试

WinForm画网格并填充颜色的更多相关文章

  1. Winform中设置ZedGraph的颜色填充使用Fill

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. HTML5填充颜色的fillStyle测试

    效果:http://hovertree.com/texiao/html5/canvas/1/ 代码: <html> <head> <meta http-equiv=&qu ...

  3. winform设置button的边框颜色,或取消边框颜色,不显示边框

    // winform设置边框颜色不像webform那么简单,可以通过设置FlatAppearance,也可以通过重绘实现. 一.设置按钮本身属性 buttonBubufx.FlatStyle = Fl ...

  4. excel如何设置输入数字后单元格自动填充颜色

    在使用excel的过程中,有时需要在输入数字时,突出显示这些单元格,突出显示可以用有填充颜色的单元格来表示.为了实现这样的效果,需要借助excel的条件格式. 工具/原料 电脑 Excel 2010 ...

  5. Android 绘制一个Loading动画__向图片中缓慢填充颜色,从而形成动画效果

    需求:制作一个加载动画,向一个不规则图片图形中从从下到上依次填充颜色,形成动画效果. 效果如下:     代码如下: LoadingAnimatorView.java package cn.yw.li ...

  6. VBA对指定单元格填充颜色并且赋值

    使用VBA对指定的单元格赋值并填充颜色 ====================================================== 代码区域 ==================== ...

  7. 怎样将Excel包含某字符的单元格填充颜色

    在处理数据的时候,xmyanke想将Excel中包含某字符的单元格填充蓝色,比较容易看清,弄了好一阵子都没完成,最后试用条件格式处理了一下,终于实现了. 比如要将A1到A12区间包含数字1的单元格填充 ...

  8. Excel的单元格设置下拉选项并填充颜色

    如何在Excel的单元格中加入下拉选项   方法/步骤     第一步:打开excel文档,选中需加入下拉选项的单元格.      第二步:点击菜单中的“数据”->“数据有效性”->“数据 ...

  9. C#中画三角形和填充三角形的简单实现

    C#中画三角形和填充三角形的简单实现: private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graph ...

随机推荐

  1. 第一课 JDK环境变量配置

    第一步:下载,并解压到D:/JDK 第二步:环境变量配置 右键我的电脑->属性->高级->环境变量->系统变量(注意:是下面的系统变量,不是上面的用户变量) 新建变量名 JAV ...

  2. 01_Python 基础课程安排

    Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...

  3. mysql 内置功能 存储过程 创建有参存储过程

    对于存储过程,可以接收参数,其参数有三类: #in 仅用于传入参数用 #out 仅用于返回值用 #inout 既可以传入又可以当作返回值 传入参数使用格式 in 变量 数据类型 返回值使用格式 out ...

  4. C++(STL)&&树-堆结构练习——合并果子之哈夫曼树

    题目题解:http://blog.csdn.net/xu12110501127/article/details/9199335 有关博客:http://www.360doc.com/content/1 ...

  5. PAT 1042 Shuffling Machine[难]

    1042 Shuffling Machine (20)(20 分) Shuffling is a procedure used to randomize a deck of playing cards ...

  6. Java编写验证码

    Java后台代码(CheckCodeServlet.java) package web; import java.awt.Color; import java.awt.Font; import jav ...

  7. SpringBoot与Docker1

    1:docker是一个开源的应用容器引擎: docker支持将软件编译成一个镜像:然后再镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这个镜像称为容器,容器启动是非 ...

  8. SpringMVC学习笔记二第一个小的程序

    首先:我们要用springmvc来写一个helloworld的例子: 首先我们需要导入所需要的架包: /demo1/WebRoot/WEB-INF/lib/commons-logging-1.1.1. ...

  9. 做报表需要知道的基本的SQL语句

    为客户做报表需要操作数据库,基本的SQL是必须要掌握的,下面介绍做报表最常用的SQL语句.   方法/步骤   1 查询数据:编号表示查询顺序. (8) select (9) distinct (11 ...

  10. activemq 消息队列服务器

    ActiveMQ 安装配置 更多 安装 前置条件:1)安装JDK:2)配置 JAVA_HOME 环境变量,确保 echo $JAVA_HOME 输出JDK的安装路径 下载:wget http://ww ...