加载中…
个人资料
小鱼
小鱼
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,362
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SDL SDL2在指定窗口中绘图

(2016-03-04 15:50:45)
分类: 2016-03

SDL默认会自动创建绘图窗口,可以通过设置环境变量,让其在指定窗口绘图。代码如下: 

  1. char sdl_var[64];     
  2. sprintf(sdl_var, "SDL_WINDOWID=%d"hWnd);//主窗口句柄   
  3. SDL_putenv(sdl_var); 

  注意:环境设置必需在SDL_Init(...)之前进行,否则不起作用

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创建一个居中显示的窗口。

需要注意的是这种方法在分辨率改变的时候依然是会存在缺陷,因为获得分辨率仅仅是进行了一次,在之后如果出现全局分辨率修改的情况的话,那么我们的显示窗口位置也就是会随之偏移。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有