#include "SDL.h"
SDL_Cursor *SDL_CreateCursor(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);
以給定的data和mask(用MSB格式)創建光標。光標寬度必須是8的倍數位。
根據以下條件創建黑色或白色的光標:
/* 引自郵件列表 */ /* 用XPM格式創建新的光標 */ /* XPM */ static const char *arrow[] = { /* 寬度 高度 顏色號 每像素的字符 */ " 32 32 3 1", /* 顏色 */ "X c #000000", ". c #ffffff", " c None", /* 像素 */ "X ", "XX ", "X.X ", "X..X ", "X...X ", "X....X ", "X.....X ", "X......X ", "X.......X ", "X........X ", "X.....XXXXX ", "X..X..X ", "X.X X..X ", "XX X..X ", "X X..X ", " X..X ", " X..X ", " X..X ", " XX ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "0,0" }; static SDL_Cursor *init_system_cursor(const char *image[]) { int i, row, col; Uint8 data[4*32]; Uint8 mask[4*32]; int hot_x, hot_y; i = -1; for ( row=0; row<32; ++row ) { for ( col=0; col<32; ++col ) { if ( col % 8 ) { data[i] <<= 1; mask[i] <<= 1; } else { ++i; data[i] = mask[i] = 0; } switch (image[4+row][col]) { case 'X': data[i] |= 0x01; k[i] |= 0x01; break; case '.': mask[i] |= 0x01; break; case ' ': break; } } } sscanf(image[4+row], "%d,%d", &hot_x, &hot_y); return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); }
SDL_FreeCursor, SDL_SetCursor, SDL_ShowCursor
2010年6月4日