我刚刚为项目完成了我的C#控制台应用程序代码,并希望为我的字体添加一些颜色.我希望能够使用自定义颜色 - 橙色.有没有办法做到这一点?
这是我过去用来改变颜色的代码,但它不提供橙色:
Console.ForegroundColor = ConsoleColor.Magenta(and so on);
Run Code Online (Sandbox Code Playgroud)
有没有办法可以为颜色或类似的东西插入十六进制值?
我从传感器读取颜色(RGB).我还有一个"已知"颜色列表,每个颜色都与一个字符串名称配对.
什么是最好的方式(即表现得像人类选择颜色)从这个列表中拉出最近颜色的名称?
我用RGB测试了最短的笛卡尔距离,但这使得灰色更接近绿色而不是黑色或白色.
我正在使用Write-Hostcmdlet来更改提示的颜色,我注意到DarkYellow颜色没有显示为任何类型的黄色,而是显示为灰色!这是对所有颜色的测试
PS> 0..15 | %{ Write-Host "Hello, world!" -ForegroundColor $_ }
Run Code Online (Sandbox Code Playgroud)
我通过使用错误的值得到了所有枚举值的列表
PS> Write-Host "Hello, World!" -ForegroundColor foo
Run Code Online (Sandbox Code Playgroud)
黑色,深蓝色,DarkGreen,DarkCyan,DarkRed,DarkMagenta,DarkYellow,灰色,DarkGray,蓝色,绿色,青色,红色,洋红色,黄色,白色
我意识到这个"控制台颜色"列表以某种方式对应于此控制台窗口/快捷方式的设置,对吧?所以,DarkYellow这将是第7个,它肯定看起来很灰.

什么是之间的连接ForegroundColor,System.ConsoleColor而这些控制台快捷键设置,?为什么暗黄色显示为"开箱即用"的灰色?我应该改变吗?这会改变我系统上的每个控制台还是只改变这个快捷方式?
为什么Windows上的控制台如此笨拙?!
我在64位Windows 7 Pro SP1上,我从"开始"菜单启动"Windows PowerShell"快捷方式.
我正在尝试将win32控制台应用程序的字体颜色分别设置为特定的RGB值,如50,75,90.我已经尝试过SetConsoleTextAttribute(),但不幸的是,对于R,G或B,它似乎被限制为0或255.
这必须是可能的,因为在命令提示符属性窗口中,您可以设置特定颜色,如此

我搜索了很多,但似乎唯一的答案是SetConsoleTextAttribute().
我怎么能把一个转换ConsoleColor成一个Color类型?
我需要这个来创建这个方法的重载,它应该返回一个颜色而不是Consolecolor:
''' <summary>
''' Generates a random ConsoleColor color.
''' </summary>
''' <returns>ConsoleColor.</returns>
Public Shared Function [ConsoleColor]() As ConsoleColor
Dim Rand As New Random
Return [Enum].Parse(GetType(ConsoleColor),
Rand.Next(0, 15))
End Function
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,但有时返回的颜色是空的,因为ConsoleColor名称是未知的:
''' <summary>
''' Generates a random QB color.
''' </summary>
''' <returns>Color.</returns>
Public Shared Function QB() As Color
Dim Rand As New Random
Return Color.FromName([Enum].Parse(GetType(ConsoleColor),
Rand.Next(0, 15)).ToString)
End Function
Run Code Online (Sandbox Code Playgroud)
PS:我想避免使用旧的VB6方法(QBColor函数).
我正在将彩色控制台输出转换为 HTML。目前,我首先将 ConsoleColors 翻译为同名的颜色(手动翻译为深黄色,因为它不存在)。
然而,我发现一些同名的 Color 和 ConsoleColor 看起来很不同,例如 CC-Green 只是 #008000 而不是 #00FF00(我确认这是实际的 RGB 值)。
我找不到所有 ConsoleColors 的实际 RGB 值的列表,我可以在映射表中使用它。这样的列表存在吗?
从这个答案我想知道是否有一种简单的方法来扭转这种方法
public static System.ConsoleColor FromColor(System.Drawing.Color c)
{
int index = (c.R > 128 | c.G > 128 | c.B > 128) ? 8 : 0; // Bright bit
index |= (c.R > 64) ? 4 : 0; // Red bit
index |= (c.G > 64) ? 2 : 0; // Green bit
index |= (c.B > 64) ? 1 : 0; // Blue bit
return (System.ConsoleColor)index;
}
Run Code Online (Sandbox Code Playgroud)
进入
public static System.Drawing.Color FromColor( System.ConsoleColor c)
{
// ??
}
Run Code Online (Sandbox Code Playgroud) 所以我最近开始学习 C#,我正在努力将控制台的背景颜色更改为十六进制值。这是我的代码:
using System;
namespace MyFisrtC_App
{
class Program
{
static void Main(string[] args)
{
ConsoleColor BGColor = ConsoleColor.White;
ConsoleColor FGColor = ConsoleColor.Black;
Console.Title = "Dumb App";
Console.BackgroundColor = BGColor;
Console.ForegroundColor = FGColor;
Console.Clear();
Console.WriteLine("This is just a simple dumb app. There is nothing special about it.");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您知道如何在 C# 中更改字体,那就太酷了。