© Conmajia 2012
Init. 18 July 2012
SN: 127.3
这是一个简单的 .NET 窗体控件,通过鼠标选择调色盘中给出颜色的 RGB 或十六进制值。
本控件的有效代码约 200 行,可以作为标准控件用于 .NET 框架的 WinForm 开发。
源代码:点击下载(78.8 KB)
此调色盘控件唯一功能是通过光标在调色盘上取色。光标在色块间移动时,通过 MouseMove
事件向主线程更新光标所在色块的颜色值,如 #0000FF 或 (0,0,255) 等。
调色盘由多个色块组成。演示代码中固定为 6 x 36 个色块,每个色块为 10 x 10 像素大小,占据窗体 60 x 360 像素区域。
如果增加色块数量而减小单个色块大小,如 60 x 360 个色块,每个色块为 1 x 1 像素,则此控件成为视觉连续的调色盘。
编码实现
控件直接由 GDI+ 绘制而成,图层分布如下。
图层内容 | 绘图层(1:最低,5:最高) |
---|---|
光标示宽器 | 5 |
调色盘边框 | 4 |
色块网格 | 3 |
色块 | 2 |
背景 | 1 |
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
drawPalette(g);
drawGrid(g);
drawBorder(g);
drawCursor(g);
}
各层的绘制代码相当简单,演示如下。
drawPalette
void drawPalette(Graphics g) {
SolidBrush b = (SolidBrush) brush;
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
b