|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2026 mgr Jerzy Wałaszek
|
SDL_CreateCursor
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby utworzyć kursor używając określonej mapy bitowej oraz maski (w formacie MSB).
SDL_Cursor* SDL_CreateCursor(const Uint8* data,
const Uint8* mask,
int w,
int h,
int hot_x,
int hot_y)
|
| data | wartość koloru dla każdego piksela kursora; zobacz do Uwag. |
| mask | wartość maski dla każdego piksela kursora; zobacz do Uwag. |
| w | szerokość kursora; zobacz do Uwag. |
| h | wysokość kursora (takie same ograniczenia jak dla w?). |
| hot_x | współrzędna x lewego górnego narożnika kursora względem bieżącej pozycji myszki. |
| hot_y | współrzędna y lewego górnego narożnika kursora względem bieżącej pozycji myszki. |
/* Skradzione z listy mailingowej */
/* Tworzy nowy kursor z XPM */
/* XPM */
static const char *arrow[] = {
/* szerokość wysokość kolory znaki_na_piksel */
" 32 32 3 1",
/* kolory */
"X c #000000",
". c #ffffff",
" c None",
/* piksele */
"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;
mask[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);
}
|
Szerokość kursora (w) musi być wielokrotnością 8 bitów.
Kursor jest tworzony w kolorach czarnym i białym zgodnie z poniższą tabelą:
| dane | maska | Wynikowy piksel na ekranie |
| 0 | 1 | Biały |
| 1 | 1 | Czarny |
| 0 | 0 | Przezroczysty |
| 1 | 0 | Odwrócony kolor, jeśli możliwe, czarny jeśli nie |
Kursory utworzone za pomocą tej funkcji muszą być zwalniane z wykorzystaniem SDL_FreeCursor().
Jeśli potrzebujesz kolorowego kursora, to ta funkcja ci się nie przyda, zamiast tego ukryj zwykły kursor systemowy za pomocą SDL_ShowCursor() i w swojej pętli głównej, gdy rysujesz grafikę, narysuj również obrazek kursora z SDL_Surface na pozycji kursora myszki.
Alternatywnie użyj SDL_CreateColorCursor().
Zwróć uwagę, że od SDL 2.0.0, dostępna jest funkcja SDL_CreateSystemCursor(), która udostępnia do wyboru dwanaście gotowych kursorów systemowych.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.