鼠标的形状 存在一个二位数组之中,大小是16*16的
①我们是用一个MouseColor的数组 来存储这个鼠标的颜色
②鼠标自身存储在cursor数组当中
void InitMouseCursor8(char *pMouseColor, char BackColor)
/* 准备鼠标指针 16*16的 */
{
static char cursor[16][16] = {
"**************..",
"*OOOOOOOOOOO*...",
"*OOOOOOOOOO*....",
"*OOOOOOOOO*.....",
"*OOOOOOOO*......",
"*OOOOOOO*.......",
"*OOOOOOO*.......",
"*OOOOOOOO*......",
"*OOOO**OOO*.....",
"*OOO*..*OOO*....",
"*OO*....*OOO*...",
"*O*......*OOO*..",
"**........*OOO*.",
"*..........*OOO*",
"............*OO*",
".............***"
};
int x, y;
for (y = 0; y < 16; y++) {
for (x = 0; x < 16; x++) {
if (cursor[y][x] == '*') {
pMouseColor[y * 16 + x] = COL8_BLACK;
}
if (cursor[y][x] == 'O') {
pMouseColor[y * 16 + x] = COL8_WHITE;
}
if (cursor[y][x] == '.') {
pMouseColor[y * 16 + x] = BackColor;
}
}
}
return;
}
显示鼠标
//把pMouseColor中的颜色 写入图形缓冲区
//pxSize pySize 设定鼠标大小 16*16 pX0 pY0 显示位置 bxSize 像素数
void OutPutMouseToMemory(char *pAdd, int nLineLen, int pxSize,
int pySize, int pX0, int pY0, char *pMouseColor, int bxSize);
void OutPutMouseToMemory(char *pAdd, int nLineLen, int pxSize,
int pySize, int pX0, int pY0, char *pMouseColor, int bxSize)
{
int x, y;
for(y = 0; y < pySize; y++)
{
for(x = 0; x < pxSize; x++)
{
pAdd[(y+pY0)*nLineLen + pX0 + x] =
pMouseColor[y*bxSize+x];
}
}
return;
}
main
int mx, my;
char szBuf[40];
char MouseColor[256];//鼠标的大小是16*16的
mx = (nXsize - 16) / 2; /* 在界面上 显示的位置 */
my = (nYsize - 28 - 16) / 2;
InitMouseCursor8(MouseColor, COL8_LightDarkBlue);
OutPutMouseToMemory(pAdd, nXsize, 16, 16, mx, my, MouseColor, 16);
sprintf(szBuf, "(%d, %d)", mx, my);
OutPutString8_ASCII(pAdd, nXsize, 0, 0, COL8_DarkRed, szBuf);