一个简易的调色盘控件

© Conmajia 2012
Init. 18 July 2012
SN: 127.3

这是一个简单的 .NET 窗体控件,通过鼠标选择调色盘中给出颜色的 RGB 或十六进制值。

色块大小为 10 x 10 的调色盘控件在窗体中的应用

色块大小为 5 x 5 的调色盘控件在窗体中的应用

本控件的有效代码约 200 行,可以作为标准控件用于 .NET 框架的 WinForm 开发。

源代码:点击下载(78.8 KB)

此调色盘控件唯一功能是通过光标在调色盘上取色。光标在色块间移动时,通过 MouseMove 事件向主线程更新光标所在色块的颜色值,如 #0000FF 或 (0,0,255) 等。

调色盘由多个色块组成。演示代码中固定为 6 x 36 个色块,每个色块为 10 x 10 像素大小,占据窗体 60 x 360 像素区域。

色块大小为 10 x 10 的调色盘控件

如果增加色块数量而减小单个色块大小,如 60 x 360 个色块,每个色块为 1 x 1 像素,则此控件成为视觉连续的调色盘。

(仅供参考)色块大小为 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
  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Conmajia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值