一,SDL圖形繪製API:點 線 矩形 填充矩形
座標系左上角是(0,0)
/**
* 點
*/
extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
int x, int y);
/**
* 多個點
*/
extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
const SDL_Point * points,
int count);
/**
* 線
*/
extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
int x1, int y1, int x2, int y2);
/**
* 多條線
*/
extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
const SDL_Point * points,
int count);
/**
* 矩形
*/
extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
const SDL_Rect * rect);
/**
* 填充
*/
extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
const SDL_Rect * rect);
二,Demo代碼
//SDL 圖形繪製 矩形 三角形
#include <stdio.h>
#include <SDL2/SDL.h>
#define POINT_COUNT 5
#define T_POINT_COUNT 4
// points to draw
static SDL_Point points[POINT_COUNT] = {
{50, 50},
{60, 50},
{60, 60},
{50, 60},
{50, 50}};
static SDL_Point triangle_points[T_POINT_COUNT] = {
{150, 150},
{200, 150},
{175, 175},
{150, 150}};
int main(int argc, char *argv[])
{
SDL_Window *sdl_window;
SDL_Renderer *renderer;
int quit = 1;
SDL_Event event;
// 0 init sdl
SDL_Init(SDL_INIT_VIDEO);
//1 create window
sdl_window = SDL_CreateWindow("triangle",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
600,
600,
SDL_WINDOW_SHOWN);
//2 create renderer
renderer = SDL_CreateRenderer(sdl_window, -1, SDL_RENDERER_SOFTWARE);
//3 set renderer color (set background color Blue)
SDL_SetRenderDrawColor(renderer, 0, 0, 255, SDL_ALPHA_OPAQUE);
//4 clear color
SDL_RenderClear(renderer);
//5 draw rect
SDL_Rect rect = {0, 0, 400, 400};
SDL_RenderDrawRect(renderer, &rect);
//Green
SDL_SetRenderDrawColor(renderer, 0, 128, 0, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, &rect);
SDL_Rect big_rect = {10, 10, 200, 200};
SDL_RenderDrawRect(renderer, &big_rect);
// Yellow
SDL_SetRenderDrawColor(renderer, 255, 255, 0, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, &big_rect);
// draw triangle
SDL_SetRenderDrawColor(renderer, 255, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderDrawLines(renderer, triangle_points, T_POINT_COUNT);
// draw rectangular
SDL_SetRenderDrawColor(renderer, 128, 0, 128, SDL_ALPHA_OPAQUE);
SDL_RenderDrawLines(renderer, points, POINT_COUNT);
// show window
SDL_RenderPresent(renderer);
do
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT:
quit = 0;
break;
default:
SDL_Log("event type is %d \n", event.type);
}
} while (quit);
__FAIL:
if (renderer)
{
SDL_DestroyRenderer(renderer);
}
if (sdl_window)
{
SDL_DestroyWindow(sdl_window);
}
SDL_Quit();
return 0;
}
最後附上 雷神的學習資料