C言語で、画像がスクロールする様をどのように実現できるか
C言語ではグラフィックライブラリ(SDLやOpenGLなど)を使用することで画像をスクロールさせることができます。以下にSDLを使った画像スクロールのサンプルコードを示します:
#include <SDL2/SDL.h>
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
#define IMAGE_WIDTH 200
#define IMAGE_HEIGHT 200
int main() {
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
SDL_Texture *texture = NULL;
// 初始化SDL
SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(SCREEN_WIDTH, SCREEN_HEIGHT, 0, &window, &renderer);
// 创建纹理
SDL_Surface *image = SDL_LoadBMP("image.bmp");
texture = SDL_CreateTextureFromSurface(renderer, image);
SDL_FreeSurface(image);
// 循环滚动图片
int x = 0;
while (1) {
SDL_Event event;
if (SDL_PollEvent(&event) && event.type == SDL_QUIT) {
break;
}
// 清空窗口
SDL_RenderClear(renderer);
// 绘制图片
SDL_Rect srcRect = { x, 0, IMAGE_WIDTH, IMAGE_HEIGHT };
SDL_Rect destRect = { 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT };
SDL_RenderCopy(renderer, texture, &srcRect, &destRect);
SDL_RenderPresent(renderer);
// 滚动图片
x += 1;
if (x >= IMAGE_WIDTH) {
x = 0;
}
}
// 清理资源
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
なお、上記のコード中のimage.bmpは指定の画像パスとなっているので、ご自身の画像パスに置き換える必要があります。また、SDLライブラリを使用してウィンドウ作成、レンダリング、イベント処理などの操作を行っているため、SDLライブラリを正しくインストールし、対応するライブラリファイルをリンクしていることを確認してください。
このコードは、画像をロードしてウィンドウに表示し、画像を循環的にスクロールする簡単なウィンドウを実装します。画像は一度に 1 ピクセルずつスクロールし、画像の末尾に達すると画像の先頭からスクロールを開始します。ウィンドウのサイズ、画像のサイズ、スクロール速度などのパラメータは必要に応じて変更できます。