我尝试使用此代码来混合颜色,有人可以向我描述代码吗?
@echo off
setlocal EnableDelayedExpansion
set hexa=0123456789ABCDEF
set /P "first=Enter first color (hexa digit): "
set /P "second=Enter second color (hexa digit): "
set /A sum= (0x%first% + 0x%second%) %% 16
set result=!hexa:~%sum%,1!
color %result%
echo The result is: %result%
我知道这是我的第一个问题的一部分,但我只是需要帮助才能正确使用它。
我很抱歉首先要问这个愚蠢的问题......我正在进行大量的研究,其中一些没有正常工作,我希望有更简单的方法来获得我想要的东西。对不起伙计=(
答案 0 :(得分:1)
在original question中,用户要求将2种颜色混合成另一种颜色(例如:红色+黄色以制作橙色)“。我回答了color
命令的颜色表,该颜色表使用16种不同的颜色,其中0到F的值以十六进制表示(相当于0到15的十进制):
0 = Black 8 = Gray
1 = Blue 9 = Light blue
2 = Green A = Light green
3 = Aqua B = Light aqua
4 = Red C = Light red
5 = Magenta D = Light magenta
6 = Brown E = Yellow
7 = White F = Bright white
我详细阐述了他的例子:红色值是4 +黄色值是E(十进制14)= 12十六进制(十进制18)。此结果超出了有效颜色范围,因此需要进行调整,并且执行此调整的常用方法是将大数字的余数除以基值,此处为16案件。这就是这一行:
set /A sum= (0x%first% + 0x%second%) %% 16
您可以输入set /?
以进一步说明上一行。这样,18位小数除以16位小数时的余数为2,对应于绿色。以十六进制表示法更容易得到余数,因为它只是最后一位数。获得此余数的另一种方法是从上一个表中的第一个值开始,然后跳转第二个值的颜色数,当表结束时返回第一个颜色(0)。
您可以尝试其他“混色”情况,例如:蓝色(1)+棕色(6)=白色(7); Aqua(3)+浅蓝色(9)=浅红色(C,十进制12);洋红色(5)+浅品红色(D,十进制13)= 12(十进制18)=绿色(2)。
请注意,如果您将灰色(8)“添加”到任何其他颜色,结果是在该颜色的深色和浅色版本之间切换。
答案 1 :(得分:0)
哦,这是你的代码的一步一步:
@echo off
关闭Echo
意味着用户无法看到执行的任何命令,只能看到输入和输出
setlocal EnableDelayedExpansion
如果!
已展开
%
扩展变量
set hexa=0123456789ABCDEF
创建一个变量hexa
,其值为所有有效的十六进制数字。
set /P "first=Enter first color (hexa digit): "
使用上述文本提取一行输入提示,并将first
设置为它。
set /P "second=Enter second color (hexa digit): "
使用上述文本提取一行输入提示,并将seconds
设置为它。
set /A sum= (0x%first% + 0x%second%) %% 16
创建一个变量sum
,该变量设置为上述等式
set result=!hexa:~%sum%,1!
从result
索引和前一个字母创建一个设置为hexa
的变量sum
。
color %result%
将屏幕颜色设置为十六进制值result
echo The result is: %result%
向控制台输出上述文本,包括变量result
的值。
这很好地解释了,如果你想让这段代码做其他事情,请随意问。
莫纳。
答案 2 :(得分:0)
CMD窗口的颜色可以像下面这样自定义(我从'color'命令帮助中选择一些句子): 颜色属性由两个十六进制数字指定 - 第一个 对应于背景;第二个是前景。每个数字 可以是以下任何值: 0 =黑8 =灰色 1 =蓝色9 =浅蓝色 2 =绿色A =浅绿色 3 = Aqua B = Light Aqua 4 =红色C =浅红色 5 =紫色D =浅紫色 6 =黄色E =浅黄色 7 =白色F =亮白色
因此可以通过以下命令指定颜色:
color F9
其中F是背景颜色,9是文本颜色。 您发布的代码中的其余部分是从输入中获取值并调用此命令。