30天自制操作系统——第二十二天图形处理

画点

点是各种图形的基础,要实现图形处理就先从画点开始。创建窗口的程序之前写过了,忘记的话往前翻翻找一下。再给窗口来一个黑色背景,窗口名就叫“夜空中最亮的星”吧。

画点API式样:

画点API:
EDX=11
EBX=窗口句柄
ESI=显示位置的x的坐标
EDI=显示位置的y坐标
EAX=色号

a_nask.nas节选:

_api_point:		; void api_point(int win, int x, int y, int col);
		PUSH	EDI
		PUSH	ESI
		PUSH	EBX
		MOV		EDX,11
		MOV		EBX,[ESP+16]	; win
		MOV		ESI,[ESP+20]	; x
		MOV		EDI,[ESP+24]	; y
		MOV		EAX,[ESP+28]	; col
		INT		0x40
		POP		EBX
		POP		ESI
		POP		EDI
		RET

夜空中最亮的星,star.c:

int api_openwin(char *buf, int xsiz, int ysiz, int col_inv, char *title);
void api_boxfilwin(int win, int x0, int y0, int x1, int y1, int col);
void api_initmalloc(void);
char *api_malloc(int size);
void api_point(int win, int x, int y, int col);
void api_end(void);

void HariMain(void)
{
   
	char *buf;
	int win;
	api_initmalloc();
	buf = api_malloc(150 * 100);
	win = api_openwin(buf, 450, 300, -1, "The brightest stars");
	api_boxfilwin(win,  6, 26, 443, 293, 0 /* 黑色 */);
	api_point(win, 225, 150, 3 /* 黄色 */);
	api_end
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值