在我的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. int main(int argc,char *argv[])
  8. {
  9. if(SDL_Init(SDL_INIT_VIDEO) < 0 )
  10. {
  11. printf("Init error\n");
  12. return -1;
  13. }
  14. SDL_Surface *screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
  15. if(!screen)
  16. {
  17. printf("Init video mode error\n");
  18. return -1;
  19. }
  20. int i = 255;
  21. for(; i >= 0; i--)
  22. {
  23. SDL_FillRect(screen, &screen->clip_rect, 0x0);
  24. boxRGBA(screen, 100, 100, 300, 300, 255, 0, 0, i);
  25. SDL_Delay(20);
  26. SDL_UpdateRects(screen,1,&screen->clip_rect);
  27. }
  28. SDL_Quit();
  29. return 0;
  30. }

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

SDL历程--课程设计之画图相关推荐

  1. C++课程设计--简易画图程序(MFC)

    目录 简介 课设题目 功能需求 实现功能 程序运行界面 源码 结语 简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C ...

  2. matlab卷积画图,基于MATLAB的卷积演示系统课程设计

    1卷积演示程序设计原理 数字信号处理的直接对象是数字信号,处理的方式是数值运算的方式,它涉及到的内容非常丰富和广泛,它是应用最快.成效最显著的新学科之一,作为信息专业的专业基础课,需要掌握其基本理论和 ...

  3. 基于JavaSwing开发画图软件 课程设计 小作业 大作业源码

    基于JavaSwing开发画图软件(大作业/课程设计) 开发环境:   Windows操作系统 开发工具:MyEclipse/eclipse/idea+Jdk 运行效果图: 基于JavaSwing开发 ...

  4. c语言画图 钟表模拟程序,图形模拟时钟C语言课程设计

    图形模拟时钟C语言课程设计 更新时间:2017/2/2 9:03:00  浏览量:640  手机版 学号13082101182014-2015学年第二学期 <高级语言程序设计> 课程设计报 ...

  5. Java课程设计-画图工具

    摘要 根据Windows自带的画图工具,进行简单的仿照,运行后用户可以实现简单的绘画,例如画三角形.多边形.矩形.曲线.直线,用户还可以根据需要选择喜欢的颜色进行绘画,并做到改变窗口大小或最小化窗口后 ...

  6. java编写类骑士游历_java课程设计骑士游历程序的开发

    java课程设计骑士游历程序的开发 JAVA程序设计 课程设计报告 课 题: 骑士游历程序的开发 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 2013.06.10 评阅意见: ...

  7. python程序设计课程设计二级减速器_机械工程专业的本科生应该自学哪些知识?...

    本人机械工程师,偏设计方向,硕士学历,有9年机械工程经验,曾担任某央企项目负责人,算不上大牛. 虽然离题目提出时间已经很遥远了,但看了这个题目和许多回答真的感慨很多,加上一些知友最近私信问我类似的问题 ...

  8. 计算机课程设计结业感言,课程设计感言

    微课程的设计与制作培训感言.微课程的设计与制作培训感言. 课程设计感言2017-07-29 19:45:41 | #1楼回目录 将近一个月的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识, ...

  9. 操作系统实验以及课程设计

    趁没人,当个小白来偷偷摸摸补一下操作系统的课程,羞 反正操作系统断断续续的看了一点了,主要是偏linux的.FreeBSD的实现,操作系统概念,30天自制操作系统等.Linux的话命令用的还行,没有很 ...

最新文章

  1. 计算机专业在线家教,基于SSM框架的家教平台设计与实现计算机专业.doc-原创力文档...
  2. Yarn已过时!Kubeflow实现机器学习调度平台才是未来
  3. C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...
  4. leetcode94. 二叉树的中序遍历(dfs)
  5. LeetCode 945. 使数组唯一的最小增量(贪心)
  6. matlab 扫雷命令,Matlab版扫雷
  7. 一行代码解决:jupyter中OSError: [Errno 99] Cannot assign requested address错误
  8. python优点是代码库支持、灵活_C++和Python混合编程的利器
  9. linux中rlwrap安装
  10. Flutter 高级篇-所有知识点架构
  11. CentOS 6.7安装Spark 1.5.2
  12. 用python画三角函数
  13. CentOS7安装dnf报错:No package dnf available
  14. 安装ADB驱动 ADB相关问题
  15. 使用FFmpeg将m4s文件转为mp4 ——哔哩哔哩缓存转码
  16. 华三路由交换配置命令_华三交换机-路由器配置命令
  17. 可见光通信系统的调制效率
  18. 基于微信小程序的大学生心理健康测试设计与实现 .docx
  19. 大学生性价比计算机推荐,快开学了 大学生该如何选择一款高性价比电脑?
  20. 使用CSS制作斜边矩形原理分析

热门文章

  1. laravel多种安装方法
  2. DELL服务器引导光盘图片及下载链接
  3. nginx php win平台配置
  4. 【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )
  5. 【RecyclerView】 十四、GridLayoutManager 网格布局管理器 ( GridLayoutManager.SpanSizeLookup 指定 item 元素占用网格个数 )
  6. 【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )
  7. 【运筹学】线性规划 人工变量法 ( 单纯形法总结 | 人工变量法引入 | 人工变量法原理分析 | 人工变量法案例 )
  8. 【运筹学】线性规划 单纯形法 阶段总结 ( 初始基可行解 | 判定最优解 | 迭代 | 得到最优解 | 全流程详细解析 ) ★
  9. Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询
  10. 数据库各个派系的起源和应用场景