上一頁 | 首頁

SDL_CreateCursor

章節:SDL API 參考 (3)
更新2001年9月11日 星期二 23:01
索引
 

名稱

SDL_CreateCursor - 創建新光標。  

摘要

#include "SDL.h"

SDL_Cursor *SDL_CreateCursor(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);  

描述

以給定的datamask(用MSB格式)創建光標。光標寬度必須是8的倍數位。

根據以下條件創建黑色或白色的光標:

Data / Mask
屏幕上所生成的像素
0 / 1
白色
1 / 1
黑色
0 / 0
透明
1 / 0
如果可以的話,就反相顯示;否則顯示黑色。

必須用SDL_FreeCursor釋放用此函數創建的光標。  

例子

/* 引自郵件列表 */
/* 用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  

譯者

石仔<guoshimin57@gmail.com>  

中文版主頁

http://guoshimin.users.sf.net  

中文版最後更新時間

2010年6月4日


 

索引

名稱
摘要
描述
例子
另見
譯者
中文版主頁
中文版最後更新時間