关于sdl的学习笔记,怎么绘制线条和矩形
来源:互联网 发布:stc isp在线编程软件 编辑:程序博客网 时间:2024/05/03 17:31
最近陷入了sdl的学习中,发现许多函数sdl库本身并没有提供,所以还需我们自己编写,下面便来分享一下自己编写的几个函数。
首先是绘制线条,说白了就是画点,下面给出代码:
void drawline(SDL_Surface *screen, Uint8 R, Uint8 G, Uint8 B,int x,int y,int xx,int yy){
int x1,y1;
for(x1=x,y1=y;x1<=xx && y1<=yy;x1++,y1++){
DrawPixel(screen,100,100,100,x1,y1);
}
}
然后是绘制矩形,那也是在绘制线条的基础上:
void drawrect(SDL_Surface *screen, Uint8 R, Uint8 G, Uint8 B,int x,int y,int width,int heigth){
int x1,y1;
for(x1=x,y1=y;x1<x+width;x1++){
DrawPixel(screen,100,100,100,x1,y1);
}
for(x1=x+width,y1=y;y1<y+heigth;y1++){
DrawPixel(screen,100,100,100,x1,y1);
}
for(x1=x,y1=y+heigth;x1<x+width;x1++){
DrawPixel(screen,100,100,100,x1,y1);
}
for( x1=x,y1=y;y1<y+heigth;y1++){
DrawPixel(screen,100,100,100,x1,y1);
}
}
上面代码中的DrawPixel函数就是来画点的,也就是绘制像素。下面看下代码:
void DrawPixel(SDL_Surface *screen, Uint8 R, Uint8 G, Uint8 B,int x,int y)
{
Uint32 color = SDL_MapRGB(screen->format, R, G, B);
if ( SDL_MUSTLOCK(screen) ) {
if ( SDL_LockSurface(screen) < 0 ) {
return;
}
}
Uint32 *bufp;
bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;
*bufp = color;
}
if ( SDL_MUSTLOCK(screen) ) {
SDL_UnlockSurface(screen);
}
SDL_Delay(5);
// SDL_Flip(screen);
SDL_UpdateRect(screen, x, y, 1, 1);
上面加了SDL_Delay,也就是延迟5秒,所以你能看到绘制过程,去掉的话绘制的最终结果便会直接显示了。
下面给出个例子:
#include <iostream>
#include "SDL/SDL.h"
using namespace std;
SDL_Surface* screen;
int main(int argc, char *argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
atexit(SDL_Quit);
screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
drawline(screen,200,200,200,100,100,200,280);
// SDL_Flip(screen);
while(1){
SDL_Event e;
while(SDL_PollEvent(&e)){
switch(e.type){
case SDL_KEYDOWN:
if(e.key.keysym.sym==SDLK_ESCAPE){
return 0;
}
break;
case SDL_QUIT:
return 0;
}
}
}
return 0;
}
本文有什么不足之处,还望大家多多指正。
- 关于sdl的学习笔记,怎么绘制线条和矩形
- IOS绘制线条、矩形的一般用法
- opencv学习笔记-5,绘制线条、矩形、圆、椭圆,添加文字
- VC++之绘制连续线条和扇形效果的线条
- OpenCV学习笔记(18):在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- html5<canvas>标签绘制矩形,线条,圆
- 【SDL】SDL学习笔记一 SDL的子系统的初始化和退出
- DirectX9 龙书学习笔记(1) 矩形的绘制
- 积累绘制的线条!
- <canvas>学习笔记——实时绘制线条摆动
- ffmpeg和SDL学习笔记
- opengl学习笔记2-2-矩形绘制
- html5的canvas绘制线条,moveTo和lineTo详解
- SDL学习笔记二(图片的加载和显示)
- supermap 绘制不同颜色的线条
- OpenCV鼠标绘制矩形和截取图像的矩形区域
- opencv鼠标绘制矩形和截取图像的矩形区域
- Canvas学习:绘制矩形
- ASP操作Excel技术总结
- eatj 的数据库访问
- 释疑贴
- C语言学习之三:常量
- symbian 开发环境搭建:VS.net2003 + Carbide.vs + Symbian OS 8.0a
- 关于sdl的学习笔记,怎么绘制线条和矩形
- AAA报文交互模式
- C# 金额分割号
- [JS]跨平台Javascript集成开发环境(IDE):Aptana
- 设备坐标和逻辑坐标
- 删除桌面被占用文件
- 古哥,一路走好
- 韩寒是一面旗帜
- ASP.net利用urlMappings重写URL路径(URL映射)