c语言获取某点颜色,[求助]怎么获取64K色图形模式下的某点颜色值

本文探讨如何使用SVGA64K库获取颜色值,并解释如何将获取的十六进制颜色值转换回RGB结构。作者分享了在没有NEO库的情况下实现的颜色操作和遇到的问题,以及如何保持颜色值的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近才有时间弄这个~~

2d4c3d0a1f447d3e5601ba676efc4e4b.gif

NEO里的那个我没弄明白!

我做了个程序,在没用NEO库下做的获取颜色,BZ看一下:

#include

#include

typedef struct

{

unsigned char b;

unsigned char g;

unsigned char r;

}

rgb16M;

int huge Return_SVGA64K(void)

{

return(3);

}

void putpoint(int x, int y, rgb16M color)

{

setrgbpalette(1026, color.r >> 3, color.g >> 2, color.b >> 3);

putpixel(x, y, 0);

}

void init64k()

{

int gd=DETECT,gm=0;

installuserdriver("Svga64K", Return_SVGA64K);

initgraph(&gd, &gm, "");

}

main()

{

int x,y;

int page,get;

long addr;

rgb16M color;

int far *videoptr = (int far *)MK_FP(0xa000, 0);

init64k();

for(x=0;x

for(y=0;y

{

color.r=8;

color.g=3;

color.b=8;

putpoint(x,y,color);

}

x=123;

y=45;

page = (int)((addr = ((long)y + 0) * 640 + x) >> 15);

_BX = 0;

_DX =page;

_AX = 0x4f05;

__int__(0x10);

get=*(videoptr + (unsigned)(addr & 0xffff));

getch();

closegraph();

printf("%d",get);

getch();

}

好象的确获取了颜色值!

但是怎么把获取的那个颜色值转化回去啊?

怎么我改了好几个color值后获取的get值都是一样的?

例如:

color.r=1 把这个1改为0或者2~7 get都是0?

color.b=0

color.g=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值