要将SDL2的坐标 (0,0) 定位在渲染窗口的中心,您需要知道窗口的宽度和高度,然后根据这些值调整您的坐标
#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的圆。注意,此示例仅用于说明如何将原点移至窗口中心,实际项目中可能需要考虑更多因素。
腾讯云数智驱动中小企业转型升级·系列主题活动
腾讯位置服务技术沙龙
云+社区沙龙online[新技术实践]
TVP技术夜未眠
腾讯数字政务云端系列直播
云+社区沙龙online第5期[架构演进]
云+社区沙龙online [新技术实践]
腾讯技术开放日
云+社区技术沙龙第33期
腾讯技术创作特训营第二季第2期
云+社区开发者大会 长沙站
领取专属 10元无门槛券
手把手带您无忧上云