第一章「SDLの基本的な使い方」第十話


ごめんなさい。嘘つきました。
前回、SDL_Surface間のやり取りをする関数を書くといったのですが、
先にこれを使わないとそれが実現できないことに気がつきました。

SDL_Rect

これは構造体ですが、矩形領域というものを定義するものです。
もっと簡単に言えば、SDL_Surface構造体が「紙」ならば、SDL_Rectは、「紙」に書かれた「絵」と言っておきましょう。

SDL_Surface型の変数の、特定の部分を、x,y座標と、w,h(広さ、高さ)を使って指定するのが働きです。

SDL_Rect rect;
rect.x=20;
rect.y=40;
rect.w=40;
rect.h=40;

SDL_Surface型の→
(20,40)w=40
h=40
←SDL_Rect型rectの部分。



一応ソース。

#include <stdio.h> #include "SDL/SDL.h" #include "SDL/SDL_image" #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL_image.lib") bool Init(void); //初期処理 bool Event(void); //イベント処理 void End(void); //終了処理 SDL_Surface *screen; SDL_Surface *img; int main(int argc, char* argv[]) { if(!Init()) //初期化&確認 { printf("初期化に失敗しました"); return 0; } img = IMG_Load("sample.png"); //これでimgには、sample.pngが入りました。 while(1) //メインループ { SDL_Rect rect; //SDL_Rect構造体を宣言 rect.x=0;rect.y=0; //xとyに値を代入 rect.w=640;rect.h=480; //wとhに値を代入 SDL_Flip(screen); if(!Event()) //イベント確認 { break; //イベントがfalseなら、ループを抜ける } SDL_Delay(100); } End(); //終了処理へ return 0; } ・・・以下省略・・・



次回こそ、絵を画面に出してみせます。(手品じゃないんだから。。。)

〜〜第十一話へ〜〜