百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

C#语言编程案例-颜色码数制转换

bigegpt 2025-01-15 10:56 21 浏览

C#语言编程案例-颜色码数制转换(人教版《信息技术》必修第1册P17例题)

做完的软件效果


案例来源介绍

本案例来自于人民教育出版社《信息技术》第17页的1道例题,题干部分如下:

实践活动:颜色码的数制转换

在计算机中,RGB(Red,Green,Blue)颜色值可以表示为十六进制颜色码。例如,颜色值RGB(64,224,208)可记为#40E0D0,其中表示红色的64,表示绿色的244和标识蓝色的208分别对应十六进制数40H、E0H、D0H。

1.将#9400D3、#D2B48C表示成相对应的RGB颜色值

2.使用计算器程序,验证上述结果。

本文对该题目进行了一下修改,利用C#代码,通过改变RGB数字来更改颜色,并且在窗体进行自动化展示。

我之前用VBA编程的方法,已经在Access数据库里实现过这个过程,可以参见我之前发的文章。

Access数据库编程案例-颜色码数制转换(人教版《信息技术》必修第一册P17例题,基于VBA)

我用C#语言把操作代码直接做成了一个软件案例,做成了一个可以跑在Windows系统下的exe可执行文件。

今天我把本案例的设计过程代码的逻辑写成一篇技术文案,供大家参考。

本次分享分为以下3个部分:1.需求分解;2.代码层次;3.代码讲解。

1.需求分解

本案例要完成的任务是:自动化的、直观地演示在不同RGB值下的窗体颜色,以及将10进制RGB数字转化为16进制数字。

主要需求分解如下:

(1)窗体和控件

本案例要做一个C#窗体,在窗体上设置3个文本框,分别控制RGB的3种颜色,每当更改数字的值就更改背景的颜色。

(2)窗体背景和图片颜色

本案例窗体背景和宇哥头像背景的颜色,要随着文本框中数字的改变而改变。

(3)自动化

用最简洁的方法,尽量少的控件,用最直观的方式演示颜色变化效果。防止输入0-255之外的数字报错,低于0的数字设为0,大于255的数字设为255。


2.代码层次

本案例的所有C#代码分为核心代码和调用代码。这样做的好处是比较节省空间,层次比较分明,看得比较清晰。

(1)核心代码

核心代码功能包括两项:

更改文本框里的RGB值,然后窗体背景和宇哥头像背景的颜色也随之自动更改。

更改文本框里的RGB值,然后10进制数字自动转化为16进制数字

这两段代码分别放在一个子过程private void里,需要的时候进行调用。

(2)调用代码

调用代码的含义就是在需要的时候运行核心代码。

本案例只要更改文本框的数字就直接调用核心代码。

如果不采用核心代码和调用代码分开的编程模式,代码会比较长还比较乱,尤其不利于操作比较复杂的调用过程。

C# 语言实现自动化的过程比VBA要容易一些。


3.代码讲解

本节讲解一下核心代码的逻辑和调用代码。

(1)核心代码

颜色变换代码是本案例的核心,是第1段核心代码。本段代码全文如下:

private void UpdateRectangleColor()
{
    int redValue, greenValue, blueValue;


    // 从文本框获取RGB值
    int.TryParse(textBox1.Text, out redValue);
    int.TryParse(textBox2.Text, out greenValue);
    int.TryParse(textBox3.Text, out blueValue);


    // 将RGB值限制在0到255之间
    redValue = Math.Max(0, Math.Min(255, redValue));
    greenValue = Math.Max(0, Math.Min(255, greenValue));
    blueValue = Math.Max(0, Math.Min(255, blueValue));


    // 更新窗体的背景颜色
    this.BackColor = System.Drawing.Color.FromArgb(redValue, greenValue, blueValue);
}

这段代码的含义如下:

先设定3个变量RedValueGreenValueBlueValue,分别代表红色、绿色蓝色

3个变量取值分别来自于三个文本框textBox1、textBox2textBoxt3

需要确保文本框里输入的数字要在0和255之间,如果超出这个范围的数字,数值要么是0要么是255。

窗体背景的颜色要随着数字更改而变化。

以下是第2段核心代码,10进制转化为16进制的代码:

private void ConvertToHex()
{
    int RedValue;
    int GreenValue;
    int BlueValue;
    string HexColor;


    // 从文本框中获取10进制RGB值,如果为空则默认为0
    RedValue = int.TryParse(textBox1.Text, out int redResult) ? redResult : 0;
    GreenValue = int.TryParse(textBox2.Text, out int greenResult) ? greenResult : 0;
    BlueValue = int.TryParse(textBox3.Text, out int blueResult) ? blueResult : 0;


    // 确保RGB值不大于255
    RedValue = Math.Min(RedValue, 255);
    GreenValue = Math.Min(GreenValue, 255);
    BlueValue = Math.Min(BlueValue, 255);


    // 将RGB值转换为16进制
    HexColor = #34;{RedValue:X2}{GreenValue:X2}{BlueValue:X2}";


    // 在Text4中显示16进制颜色值
    textBox4.Text = HexColor;
}

这段代码的含义如下:除了定义红绿蓝3个颜色的变量,再定义第4个变量HexColor。

X2 是C#中的格式说明符,用于将整数格式化为两位十六进制数字。这确保了每个分量都用两个十六进制数字表示,即使值小于16(例如,10会表示为"0A")。

(2)调用代码

调用代码是案例自动化的一部分,不可或缺,完整的调用代码如下:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    UpdateRectangleColor();
    ConvertToHex();
}


private void textBox2_TextChanged(object sender, EventArgs e)
{
    UpdateRectangleColor();
    ConvertToHex();
}


private void textBox3_TextChanged(object sender, EventArgs e)
{
    UpdateRectangleColor();
    ConvertToHex();
}

这三段代码的含义:更改3个textBox的时候,自动直接调用核心代码。

很简单很清楚有木有。

代码编写完毕之后,点击运行,生成exe文件。

C#生成的exe文件,可以在windows条件下随便打开、随便迁移和复制粘贴。

C#的exe生成过程非常的容易,操作非常简便,比Java、C++都要方便很多。这个功能是C#编程语言最大的优势。


总结

本案例重要知识点有3个:

1.掌握C#的颜色更改的技术。

2.10进制转16进制的X2使用。

3.窗体自动化技术和exe生成技术。

用数字控制窗体背景颜色,C#编程的技术本身不难,知识点不多。

但是需要重视细节的把控,另外也要理解模块化编程、以及把核心代码调用代码分开的好处。


想学习Access数据库请私聊。

--The End--

相关推荐

10w qps缓存数据库——Redis(redis缓存调优)

一、Redis数据库介绍:Redis:非关系型缓存数据库nosql:非关系型数据库没有表,没有表与表之间的关系,更不存在外键存储数据的形式为key:values的形式c语言写的服务(监听端口),用来存...

Redis系列专题4--Redis配置参数详解

本文基于windowsX64,3.2.100版本讲解,不同版本默认配置参数不同在Redis中,Redis的根目录中有一个配置文件(redis.conf,windows下为redis.windows....

开源一夏 | 23 张图,4500 字从入门到精通解释 Redis

redis是目前出场率最高的NoSQL数据库,同时也是一个开源的数据结构存储系统,在缓存、数据库、消息处理等场景使用的非常多,本文瑞哥就带着大家用一篇文章入门这个强大的开源数据库——Redis。...

redis的简单与集群搭建(redis建立集群)

Redis是什么?是开源免费用c语言编写的单线程高性能的(key-value形式)内存数据库,基于内存运行并支持持久化的nosql数据库作用主要用来做缓存,单不仅仅是做缓存,比如:redis的计数器生...

推荐几个好用Redis图形化客户端工具

RedisPlushttps://gitee.com/MaxBill/RedisPlusRedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件,支持Windows、Linux...

关于Redis在windows上运行及fork函数问题

Redis在将数据库进行持久化操作时,需要fork一个进程,但是windows并不支持fork,导致在持久化操作期间,Redis必须阻塞所有的客户端直至持久化操作完成。微软的一些工程师花费时间在解决在...

你必须懂的Redis十大应用场景(redis常见应用场景)

Redis作为一款高性能的键值存储数据库,在互联网业务中有着广泛的应用。今天,我们就来详细盘点一下Redis的十大常用业务场景,并附上Golang的示例代码和简图,帮助大家更好地理解和应用Redis。...

极简Redis配置(redis的配置)

一、概述Redis的配置文件位于Redis安装目录下,文件名为redis.conf(Windows名为redis.windows.conf,linux下的是redis.conf)你可以通过C...

什么是redis,怎么启动及如何压测

从今天起咱们一起来学习一下关于“redis监控与调优”的内容。一、Redis介绍Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。...

一款全新Redis UI可视化管理工具,支持WebUI和桌面——P3X Redis UI

介绍P3XRedisUI这是一个非常实用的RedisGUI,提供响应式WebUI访问或作为桌面应用程序使用,桌面端是跨平台的,而且完美支持中文界面。Githubhttps://github....

windows系统的服务器快速部署java项目环境地址

1、mysql:https://dev.mysql.com/downloads/mysql/(msi安装包)2、redis:https://github.com/tporadowski/redis/r...

window11 下 redis 下载与安装(windows安装redis客户端)

#热爱编程是一种怎样的体验#window11下redis下载与安装1)各个版本redis下载(windows)https://github.com/MicrosoftArchive/r...

一款轻量级的Redis客户端工具,贼好用!

使用命令行来操作Redis是一件非常麻烦的事情,我们一般会选用客户端工具来操作Redis。今天给大家分享一款好用的Redis客户端工具TinyRDM,它的界面清新又优雅,希望对大家有所帮助!简介Ti...

一个.NET开发且功能强大的Windows远程控制系统

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍SiMayRemoteMonitorOS是一个基于Windows的远程控制系统,完...

Redis客户端工具详解(4款主流工具)

大家好,我是mikechen。Redis是大型架构的基石,也是大厂最爱考察内容,今天就给大家重点详解4款Redis工具@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集...