【问题标题】:Get pixel color via dos.h (turbo c++)通过 dos.h (turbo c++) 获取像素颜色
【发布时间】:2018-02-05 05:26:09
【问题描述】:

我目前正在从事一个需要我在没有图形的情况下在屏幕上绘制东西的项目。我正在使用 DOSBOX (turbo c++)。

以下函数通过中断 (dos.h) 将颜色为“color”(1-256) 的像素放入屏幕的 x,y 中:

void PutPixel(int x, int y, int color) {
    _AH = 0x0C;
    _AL = color;
    _CX = x;
    _DX = y;
    _BX = 0x01;
    geninterrupt (0x10);
}

返回 x,y 中像素颜色的函数的代码是什么?我想像:

type getPixel(int x, int y){
//code
return color;
}

另外,有人能解释一下 PutPixel 的工作原理吗?我知道它会修改寄存器,但我不知道每个值的含义(除了基于上下文的 _CX、_DX、_AL)。

【问题讨论】:

  • 考虑使用现代编译器,您可以在其中实际编写符合标准的 C++。
  • 即使是上个世纪的 4-standard-releases-ago 编译器也会比这更好。如果在任何地方,这属于 RetroComputing.SE,以及 Commodore64 和 ZX84 问题。
  • turbo c++ 和 DOSBOX 的使用是该任务的要求,其目的是模拟一台非常旧的计算机。该项目涉及从头开始制作 GUI(逐个像素)。

标签: c++ turbo-c++


【解决方案1】:

我猜getPixel()可以这样实现:

int getPixel(int x, int y)
{
    _AH = 0x0D;
    _CX = x;
    _DX = y;
    _BX = 0x01;
    geninterrupt (0x10);
    return _AL;
}

这些事情通过调用存储在您计算机 BIOS 中的代码(中断处理程序)来工作。

您可以在Wikipedia阅读更多相关信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多