SDL历程--课程设计之画图

简介:

     在我的SDL系列文章中的上一篇我已经介绍了关于SDL的安装过程及其详细步骤,下面就开始我们的SDL征途吧。
   这一篇我着重为大家讲解如何利用SDL做一个简单的颜色自动变换调色板。

根据SDL官方文档我们很容易就能够获得建立一个屏幕的步骤:
首先我们要初始化一个Video,而后获得一个SDL_Surface;
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
如果函数调用成功则一切OK,
SDL给用户提供了很多画图的API,它们在SDL_gfxPrimitives.h文件中
在这里我们只用其中的一个来实现我们的功能

 
  1. boxRGBA(SDL_Surface * dst, Sint16 x1, Sint16 y1, Sint16 x2, 
  2.   Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); 


这个函数就可以实现在dst上显示出我们所要绘制的图案了...是不是感觉很high呀...就这么简单
下面我就把具体的代码贴出来供大家分享下...

 

 
  1. #include <SDL.h> 
  2. #include <SDL_gfxPrimitives.h> 
  3. #include <SDL_image.h> 
  4. #include <SDL_rotozoom.h> 
  5. #include <SDL_ttf.h> 
  6. #include <stdio.h> 
  7.  
  8. int main(int argc,char *argv[]) 
  9.  if(SDL_Init(SDL_INIT_VIDEO) < 0 ) 
  10.  { 
  11.   printf("Init error\n"); 
  12.   return -1; 
  13.  } 
  14.  
  15.  
  16.  SDL_Surface *screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE); 
  17.  
  18.  
  19.  if(!screen) 
  20.  { 
  21.   printf("Init video mode error\n"); 
  22.   return -1; 
  23.  } 
  24.  int i = 255; 
  25.  for(; i >= 0; i--) 
  26.  { 
  27.   SDL_FillRect(screen, &screen->clip_rect, 0x0); 
  28.   boxRGBA(screen, 100, 100, 300, 300, 255, 0, 0, i); 
  29.   SDL_Delay(20); 
  30.   SDL_UpdateRects(screen,1,&screen->clip_rect); 
  31.    
  32.  } 
  33.  SDL_Quit(); 
  34.  
  35.  return 0; 

      本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/832855,如需转载请自行联系原作者



相关文章
|
4月前
|
自然语言处理 数据可视化 UED
QT基础教学(窗口组件)
QT基础教学(窗口组件)
42 0
|
6月前
|
C++
[学习][笔记] qt5 从入门到入坟:《零》vs开发qt项目
[学习][笔记] qt5 从入门到入坟:《零》vs开发qt项目
|
算法 Ubuntu Linux
红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...
红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...
|
Python
《空洞机甲》2020大一编程赛__自制 Python Pygame 游戏
《空洞机甲》2020大一编程赛__自制 Python Pygame 游戏
97 0
《空洞机甲》2020大一编程赛__自制 Python Pygame 游戏
|
算法 图形学 C++
手把手用c++的easyx库,带你做出飞机大战
手把手用c++的easyx库,带你做出飞机大战
|
Java C# vr&ar
手把手带你使用Paint in 3D和Photon撸一个在线涂鸦画板
Paint in 3D用于在游戏内和编辑器里绘制所有物体。所有功能已经过深度优化,在WebGL、移动端、VR 以及更多平台用起来都非常好用! 它支持标准管线,以及 LWRP、HDRP 和 URP。通过使用GPU 加速,你的物体将以难以置信的速度被绘制。代码还经过深度优化来防止GC,和将所有绘制操作一起批次完成。 跟贴图系统不同,它是一个纹理绘制解决方案。这意味着你可以绘制你的物体上百万次,还是无帧率丢失,让你创作难以想象的游戏。
606 0
手把手带你使用Paint in 3D和Photon撸一个在线涂鸦画板
|
移动开发 前端开发 JavaScript
HaaS UI小程序解决方案进阶教学之一:Canvas画图入门
canvas的应用场景非常多,主要运用在一些需要操作图形的场景,如绘制曲线、特效、粒子特效、图表、游戏、二维码、条形码等等场景。
HaaS UI小程序解决方案进阶教学之一:Canvas画图入门