SDL SDL2在指定窗口中绘图
(2016-03-04 15:50:45)分类: 2016-03 |
SDL默认会自动创建绘图窗口,可以通过设置环境变量,让其在指定窗口绘图。代码如下:
- char
sdl_var[64]; - sprintf(sdl_var,
"SDL_WINDOWID=%d", hWnd); //主窗口句柄 -
SDL_putenv(sdl_var);
win7系统下载资讯:SDL是一个以标准C为接口的简易多媒体支持库,并且其主要是面向2D图形程序设计。因为跨平台的原因所以说SDL在几乎我们可以
见到的任何操作系统之中都是可以使用,在win7系统下载之中如果希望使用SDL的话必须是创建一个windows窗口,之后任何的绘图工作都在
windows窗口之中完成。
使用SDL_SetVideoMode函数就是可以实现对于windows窗口的创建,但是SDL默认创建的窗口有一个缺陷,那就是不能设置窗口的显示位置。而这个问题其实可以通过SDL_putenv来解决。
使用SDL_putenv来设置SDL窗口位置
使用SDL_putenv来设置SDL的窗口位置很简单,比如说
SDL_putenv(“SDL_VIDEO_WINDOW_POS=20,20”);这句代码就是可以把创建窗口的坐标定位在左上角的20.20之上。
之后创建的窗体会按照这个位置显示出来。但是如果我们希望创建一个居中显示的窗口的话,那么必须是有另外一个信息,那就是屏幕分辨率的大小。
使用SDL来创建居中的窗口
在windows操作系统之中使用 GetSystemMetrics( SM_CXSCREEN )或者是
GetSystemMetrics( SM_CYSCREEN
)两个函数可以实现对于当前分辨率的获得,而获得这种信息虽然是整型数字,win7
64位旗舰版http://huizu88.cn/但是做一个字符串转换就是可以把这种数据类型容纳到SDL_putenv的命令之中。这样就是可以让
SDL创建一个居中显示的窗口。
需要注意的是这种方法在分辨率改变的时候依然是会存在缺陷,因为获得分辨率仅仅是进行了一次,在之后如果出现全局分辨率修改的情况的话,那么我们的显示窗口位置也就是会随之偏移。