C 中的图像处理——处理一个 256 色位图图像

Image processing in C — processing a 256-color bitmap image

我正在使用 Borland Turbo C 和 Borland 图形界面。

我有两个问题:

  1. 我必须处理 256 色位图图像。使用EGAVGA驱动很难处理,所以我决定使用SVGA驱动。它工作正常,但是当我将图像转换为灰度时,而不是只显示灰度图像,整个 window 进入灰度模式。有什么方法可以使用 outp(0x03c8, data)outp(0x03c9, data) 函数更改特定区域的调色板吗?

  2. 鼠标功能在EGAVGA模式下工作正常,但光标在SVGA模式下不可见。甚至鼠标也能正常工作。如何为 256 色的 SVGA 模式创建自定义鼠标光标?我有使用 0x10 中断在 EGAVGA 模式下创建自定义鼠标指针的代码,但它不适用于 SVGA 模式?

在调色板视频模式下,调色板条目会影响整个屏幕。如果您更改任何索引,屏幕上具有该索引的所有像素都会更改,无论它们是否属于您的图像。

如果您的图像要与其他人共享屏幕,并且您希望该图像是唯一一个变为灰度的图像,您必须预留一些调色板条目供您的图像专用,因此更改它们不会'不会影响屏幕中的其他图形元素。

在 Windows 和 X-Window 上,如果我没记错的话,当您的 window 应用程序获得焦点时,整个屏幕将具有您调色板的颜色。否则,它将恢复为系统调色板,您的 windows 及其内容将显示 "weird".