C#winform如何绘制二维网格图,具体各个单元格的颜色已经有数据了,不知道怎么实现图像的绘制
做了一个简单的示例,看效果:
或者有色块的网格:
以下是无色块的示例代码:
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1.Forms.Csdn
{
public partial class Q7756354 : Form
{
readonly int rows = 10;
readonly int cols = 10;
float _cellWidth;
float _cellHeight;
private readonly Pen _pen = new Pen(Color.BurlyWood);
public Q7756354()
{
InitializeComponent();
_cellWidth = (float)ClientSize.Width / cols;
_cellHeight = (float)ClientSize.Height / rows;
}
private void Q7756354_Resize(object sender, System.EventArgs e)
{
_cellWidth = (float)ClientSize.Width / cols;
_cellHeight = (float)ClientSize.Height / rows;
Invalidate();
}
private void Q7756354_Paint(object sender, PaintEventArgs e)
{
for (var row = 0; row < rows; row++)
{
var y = row * _cellHeight;
var w = _cellWidth;
for (var col = 0; col < cols; col++)
{
var x = col * _cellWidth;
var h = _cellHeight;
DrawRectangle(x, y, w, h);
}
}
var g = e.Graphics;
for (var i = 1; i < rows; i++)
{
g.DrawLine(_pen, 0, i * _cellHeight, ClientSize.Width, i * _cellHeight);
}
for (var i = 1; i < cols; i++)
{
g.DrawLine(_pen, i * _cellWidth, 0, i * _cellWidth, ClientSize.Height);
}
}
private void DrawRectangle(float x, float y, float width, float height)
{
var brush = new SolidBrush(Color.DarkGray);
var graphics = CreateGraphics();
graphics.FillRectangle(brush, new RectangleF(x, y, width, height));
brush.Dispose();
graphics.Dispose();
}
}
}