首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让SDL2 0,0在渲染时定位窗口的中心?

要将SDL2的坐标 (0,0) 定位在渲染窗口的中心,您需要知道窗口的宽度和高度,然后根据这些值调整您的坐标

代码语言:javascript
复制
#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_VIDEO);

    int windowWidth = 800;
    int windowHeight = 600;

    SDL_Window *window = SDL_CreateWindow("SDL2 Window",
                                         SDL_WINDOWPOS_CENTERED,
                                         SDL_WINDOWPOS_CENTERED,
                                         windowWidth,
                                         windowHeight,
                                         SDL_WINDOW_SHOWN);

    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

    // 确保SDL_SetRenderDrawColor设置了颜色
    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
    SDL_RenderClear(renderer);

    int centerX = windowWidth / 2;
    int centerY = windowHeight / 2;

    // 假设您要绘制一个圆心位于屏幕中心的圆,半径为50
    int radius = 50;

    // 设置绘制颜色,例如红色
    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);

    // 绘制圆的轮廓
    for (int w = 0; w < radius*2; w++) {
        for (int h = 0; h < radius*2; h++) {
            int dx = radius - w; // horizontal offset
            int dy = radius - h; // vertical offset
            if ((dx*dx + dy*dy) <= (radius * radius)) {
                SDL_RenderDrawPoint(renderer, centerX + dx, centerY + dy);
            }
        }
    }

    SDL_RenderPresent(renderer);

    // 在此处添加您的事件循环和其他逻辑

    SDL_Delay(3000); // 仅用于演示目的,在3秒后关闭窗口

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

在此示例中,我们首先获取窗口的宽度和高度,然后计算中心点的坐标。接下来,我们使用这些坐标作为圆心,绘制一个半径为50的圆。注意,此示例仅用于说明如何将原点移至窗口中心,实际项目中可能需要考虑更多因素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券