- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用控制台应用程序时,人们不禁会注意到 native 命令BackgroundColor和ForegroundColor仅支持CGA色谱(黄色、红色、深黄色、深红色等)
我想做的是对此进行扩展,以便我可以使用当前分辨率支持的任何颜色(也称为真彩色等),而不仅仅是这个有限的颜色池。
在编写 DOS 应用程序(是的。DOS --- 古老的老式 DOS)时,我可以毫无问题地选择几乎任何颜色,远远超出此限制。我记得在 .NET 的婴儿期(2002 年)看到过一些关于如何做到这一点的内容,但我无法找到它,因为搜索中有关“控制台”和“颜色”的每个链接都提出了如何着色,并且仅在如图所示,绝对是最基本的颜色 --- 本质上向人们展示了如何更改 ForegroundColor 和 BackgroundColor 属性。
澄清一下 - 我希望能够使用 TRUE COLOR,即使用 VB.NET 的控制台应用程序内可用于字体颜色和背景颜色的整个色谱。
我在这里找到了一篇文章,展示了如何找到与任何给定颜色“最接近”的控制台颜色,但这不起作用。基本颜色缺少许多真实颜色,例如橙色,而且至少有 1000 种其他命名颜色。
我同意通过使用 Win32/etc API 来解决这个问题,并且逻辑认为这一定是可能的,因为控制台内运行的大量应用程序允许真彩色或至少支持 VGA。
最佳答案
控制台的目的只是提供一种从旧操作系统版本移植文本模式程序的方法。这么多年过去了,你对可能发生的事情的内存也许太模糊了。 MS-Dos 从未提供超出 ANSI.SYS 设备驱动程序直接设置颜色的方法,您必须发送转义码来更改文本颜色。很大程度上被忽视了,更常见的是使用BIOS,interrupt 10h ,功能9。BL寄存器指定属性,4位为前景色,4位为背景色。颜色的选择是在视频适配器和显示器中硬连线的。
但到目前为止,最常见的方法是直接写入视频帧缓冲区,地址 0xB800:0。屏幕上的每个单元格都由两个字节映射,1 表示字符,1 表示属性。主要是为了解决早期视频适配器在滚动屏幕时遇到的可怕的闪烁问题。 CGA 并不完全是 IBM 工程技术的胜利。 Hercules 是一家制造 very popular alternative 的公司,它实际上设定了自己的标准。
PC 游戏得益于 VGA 适配器,例如《毁灭战士》。 CGA 和 EGA 适配器的后继者,它支持 256 色图形模式。它需要一台不同的显示器,一个模拟显示器,并且有一个带有 256 个寄存器的可编程 DAC(数模转换器),可以从可能的 1600 万种颜色中选择 256 种颜色。这向世界介绍了调色板的概念,这是一个相当痛苦的编程挑战。我非常不愉快地记得与RealizePalette()作斗争。 winapi函数。
Windows 也是真彩色 24bpp 视频适配器的主要插入者,突破了 BIOS 模式的限制。 1994 年左右,它们开始变得可以负担得起。这种支持从未向后移植到 BIOS,它一直停留在 20 世纪 80 年代。
您所记得的 Windows 9x 并不是控制台。旧的 16 位 DOS 程序在模拟器中运行。他们继续滥用/使用视频帧缓冲区,将文本模式写入 0xB800:0,将图形模式写入 0xA000:0,并直接调整视频适配器控制寄存器。对拦截直接硬件访问的主要支持由处理器提供,它运行在“虚拟8086”模式下。该模拟器的一个重要子组件是“视频采集器”,它是一个可以将虚拟视频适配器内存映射到窗口中的像素的驱动程序。这就是您记得看到的那个窗口。值得注意的是按 Alt+Enter 键,它可以即时关闭视频采集器,在全屏和窗口 View 之间来回切换。
长话短说,控制台窗口仅尝试模拟 BIOS 文本视频模式。所有这些都是所需要的。凭借其对“属性”的固定解释,4 位用于选择 16 种颜色中的一种作为前景,4 位用于选择背景。使用图形视频模式的程序必须全屏运行。很少有人还能工作,64 位版本的 Windows 不再能够将处理器切换到虚拟 8086 模式,AMD/Intel 已放弃对其的支持。
BIOS文本模式有一些扩展,窗口不固定宽度和高度并支持滚动。控制台窗口支持调色板的概念。您不必满足于花哨的传统颜色,您可以直接从系统菜单中更改它们。属性菜单项,颜色选项卡。使用 SetConsoleScreenBufferInfoEx() 以编程方式完成,CONSOLE_SCREEN_BUFFER_INFOEX.ColorTable member 。 16 个 RGB 值的数组。否则,另一个强烈提醒是,16 是一个严格的限制:) 并且该属性从 8 位扩展到 16 位,提供 7 extra bits用于特殊效果。包装 winapi 控制台功能的 API 很少使用,而且往往也基于旧版 BIOS 功能。
关于vb.net - 使用 VB.NET 控制台内的真彩色支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091097/
我的 processmaker 安装遇到了一些问题。我正在尝试使用本指南 [url]http://wiki.processmaker.com/index.php/ProcessMaker_Ubuntu
我正在使用 ShareKit。发送 SMS 消息使用 MFMessageComposeViewController,用户看到标题“文本”。我想将该标题更改为更能反射(reflect)实际可用内容的内容
我需要在我的一个针对 Gingerbread 的 Android 应用程序中使用操作栏和 fragment 的组合。所以我使用了 v7 支持库中的操作栏和 v4 支持库中的 fragment ,并使用
我明白为什么浏览器 vendor 不想帮助我阻止他们的 UI 线程。但是,我不明白为什么会有: Web Workers 中没有 sleep (2) 没有同步 WebSockets API 有一个syn
最近我的组织正在考虑使用 Docker。我们组使用的是cloudera CDH 5.1.2。 1) cloudera 是否与 Docker 容器兼容?2) docker 和cloudera 组合是否存
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
我一直在使用 PyDev 成功运行 nose 测试,并想试试 nose2。 所以我安装了它 pip install nose2 复制/粘贴来自 http://nose2.info/ 的示例代码进入名为
我想知道 LLVM 中是否有任何函数/方法可以在 LLVM IR 中添加 Open-MP 构造。 llvm-3.0 是否仍然支持 OpenMP 指令? 最佳答案 OpenMP 是一种高级语言扩展。因此
我对 CUDA 编程非常陌生。我正在浏览 SDK 附带的示例。我能够编译代码,但是当我运行它时,出现以下错误: "clock.cu(177) : CUDA Runtime API error 38:
RStudio 是用于 R 开发的出色 IDE。我想知道是否有任何方法可以很好地支持 HiDPI 分辨率? 我目前有 13 英寸显示器和 3200x1800 分辨率,甚至很难阅读 RStudio 选项
我正在寻找一种有助于为 Django 项目提供 RDF 支持的工具。 到目前为止,我发现了两个: django-rdf - 最后一次修改是在 4 年前,所以它看起来像是一个死项目。 djubby -
我刚刚尝试了一些 JS 核心原则,发现引擎评估链接的关系运算符而不会引发错误。相反,他们以我自己无法理解的方式进行评估。 console.log(1 4 > 3 > 2 > 1); //false,
我知道 etexteditor 和 vim/emacs。 是否有任何其他 Windows 编辑器支持类似 textmate 的片段(例如,您编写触发词,按 Tab,它更改为某些内容,再次按 Tab,它
我正在尝试找出验证给定集群的网络策略配置的最佳方法。 According to the documentation Network policies are implemented by the ne
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
Z3 会支持 AUFBV 吗? 对于以下脚本: (set-logic AUFBV) (declare-fun x () (_ BitVec 16)) (declare-const t (Array (
使用分部类编写 NUnit 测试的优缺点是什么? 我要开始了: 亲:可以测试私有(private)方法 缺点:TDD 不再可能了 还有什么? 最佳答案 缺点:要么您必须测试与您发布的版本不同的构建,要
它很容易(对于 90% 的 aop 特性)在没有任何语言本身支持的情况下做到这一点,就像大多数动态语言如 python 和 ruby 一样。然而,Dojo在 1.3.2 上直接支持它.最新版本发生
我在我的 android 应用程序中使用亚洲字符,我已经了解到某些字符无法显示,因为系统字体不支持它们。我查询了一个包含亚洲字符的数据库,并且经常检索到无法显示的标志。这些情况对我的应用程序来说通常不
你好,我想实现一个控件,我想在用户键入@字符时启用该控件,直到未填充运行文本中的空格为止,它应该显示用户列表,@符号后键入的文本应该显示基于键盘字符的建议,就像我们在上面看到的那样Twitter 或
我是一名优秀的程序员,十分优秀!