我需要创建一个 40x40 矩阵并手动为每个单元格着色,如下所示。
我认为我可以在表单应用程序上使用 40*40=160 个标签并一一着色,但这不是很有效。对此的最佳做法是什么。也许颜色矩阵?
我需要创建一个 40x40 矩阵并手动为每个单元格着色,如下所示。
我认为我可以在表单应用程序上使用 40*40=160 个标签并一一着色,但这不是很有效。对此的最佳做法是什么。也许颜色矩阵?
这是一个完整但简单的 Windows 窗体应用程序。
这可能是最直接的方式。考虑一下我没有从矩阵中获取颜色的事实,但是您明白了,它具有您应该在代码中绘制它的方式。
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
for (int x = 0, y = 0; x + y != (this.Width + this.Height); x++)
{
var color = Color.Red;
if (x % 2 == 0 && y % 2 != 0) { color = Color.Blue; }
e.Graphics.FillRectangle(new SolidBrush(color), x, y, 1, 1);
if (x == this.Width)
{
x = -1;
y++;
}
}
}
}
}
拦截 OnPaint 事件的一种替代方法是创建一个 40x40 像素的位图,例如通过 System.Drawing.Bitmap 类,设置所有像素的颜色。
最后根据您的 UI 技术在 PictureBox(Windows 窗体)或图像(WPF)中显示它,并设置缩放值以填充整个控件的大小。