WinForm画网格并填充颜色
因为研究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画网格并填充颜色的更多相关文章
- Winform中设置ZedGraph的颜色填充使用Fill
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- HTML5填充颜色的fillStyle测试
效果:http://hovertree.com/texiao/html5/canvas/1/ 代码: <html> <head> <meta http-equiv=&qu ...
- winform设置button的边框颜色,或取消边框颜色,不显示边框
// winform设置边框颜色不像webform那么简单,可以通过设置FlatAppearance,也可以通过重绘实现. 一.设置按钮本身属性 buttonBubufx.FlatStyle = Fl ...
- excel如何设置输入数字后单元格自动填充颜色
在使用excel的过程中,有时需要在输入数字时,突出显示这些单元格,突出显示可以用有填充颜色的单元格来表示.为了实现这样的效果,需要借助excel的条件格式. 工具/原料 电脑 Excel 2010 ...
- Android 绘制一个Loading动画__向图片中缓慢填充颜色,从而形成动画效果
需求:制作一个加载动画,向一个不规则图片图形中从从下到上依次填充颜色,形成动画效果. 效果如下: 代码如下: LoadingAnimatorView.java package cn.yw.li ...
- VBA对指定单元格填充颜色并且赋值
使用VBA对指定的单元格赋值并填充颜色 ====================================================== 代码区域 ==================== ...
- 怎样将Excel包含某字符的单元格填充颜色
在处理数据的时候,xmyanke想将Excel中包含某字符的单元格填充蓝色,比较容易看清,弄了好一阵子都没完成,最后试用条件格式处理了一下,终于实现了. 比如要将A1到A12区间包含数字1的单元格填充 ...
- Excel的单元格设置下拉选项并填充颜色
如何在Excel的单元格中加入下拉选项 方法/步骤 第一步:打开excel文档,选中需加入下拉选项的单元格. 第二步:点击菜单中的“数据”->“数据有效性”->“数据 ...
- C#中画三角形和填充三角形的简单实现
C#中画三角形和填充三角形的简单实现: private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graph ...
随机推荐
- 第一课 JDK环境变量配置
第一步:下载,并解压到D:/JDK 第二步:环境变量配置 右键我的电脑->属性->高级->环境变量->系统变量(注意:是下面的系统变量,不是上面的用户变量) 新建变量名 JAV ...
- 01_Python 基础课程安排
Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...
- mysql 内置功能 存储过程 创建有参存储过程
对于存储过程,可以接收参数,其参数有三类: #in 仅用于传入参数用 #out 仅用于返回值用 #inout 既可以传入又可以当作返回值 传入参数使用格式 in 变量 数据类型 返回值使用格式 out ...
- C++(STL)&&树-堆结构练习——合并果子之哈夫曼树
题目题解:http://blog.csdn.net/xu12110501127/article/details/9199335 有关博客:http://www.360doc.com/content/1 ...
- PAT 1042 Shuffling Machine[难]
1042 Shuffling Machine (20)(20 分) Shuffling is a procedure used to randomize a deck of playing cards ...
- Java编写验证码
Java后台代码(CheckCodeServlet.java) package web; import java.awt.Color; import java.awt.Font; import jav ...
- SpringBoot与Docker1
1:docker是一个开源的应用容器引擎: docker支持将软件编译成一个镜像:然后再镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这个镜像称为容器,容器启动是非 ...
- SpringMVC学习笔记二第一个小的程序
首先:我们要用springmvc来写一个helloworld的例子: 首先我们需要导入所需要的架包: /demo1/WebRoot/WEB-INF/lib/commons-logging-1.1.1. ...
- 做报表需要知道的基本的SQL语句
为客户做报表需要操作数据库,基本的SQL是必须要掌握的,下面介绍做报表最常用的SQL语句. 方法/步骤 1 查询数据:编号表示查询顺序. (8) select (9) distinct (11 ...
- activemq 消息队列服务器
ActiveMQ 安装配置 更多 安装 前置条件:1)安装JDK:2)配置 JAVA_HOME 环境变量,确保 echo $JAVA_HOME 输出JDK的安装路径 下载:wget http://ww ...