SDL学习(2)图形的处理

来源:互联网 发布:网页游戏修改软件 编辑:程序博客网 时间:2024/06/03 16:53

1;SDL_Surface*surface =SDL_GetWindowSurface(window);  //和下面那一行用于贴图

    SDL_Surface*qq1 =SDL_LoadBMP("qq1.bmp");


  while(SDL_PollEvent(&event)){
            if(event.type==SDL_QUIT) {
                quit=true;
            }
            else if (event.type==SDL_MOUSEMOTION){
               int. x=event.motion.x
                int. y=event.motion.y

       prinf("此时鼠标的坐标为%d,%d“,x,y);

//然后

                SDL_FillRect(surface,NULL,0);//更新图片(清除掉上一次的图片
                SDL_BlitSurface(qq1,NULL,surface,&rect);//画图


                SDL_UpdateWindowSurface(window);*/
  //  这一个方法主要在于初始点为 默认点而要调节初始点用下面的

2;

SDL_Rect rect;
    rect.x=0;   //三个用于设置坐标
    rect.y=0;

  rect. x=event.motion.x-(qq1 ->w/2);//(后面个减多少为自定义本段为设定在中间位置
   rect. y=event.motion.y-(qq1 ->h/2);  

这个用于定义图片的位置而要调整大小则用下面的

3; SDL_Init(SDL_INIT_VIDEO);
    SDL_Window*window=SDL_CreateWindow("oxy",100,100,//创建一个窗口
                                      800,700,SDL_WINDOW_SHOWN);
    SDL_Renderer*rend =SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
    SDL_RenderClear(rend);//清屏


   // SDL_Surface*surface =SDL_GetWindowSurface(window);  //和下面那一行用于贴图






    SDL_Surface*catSurface=SDL_LoadBMP("qq1.bmp");
    SDL_Texture*qq1=SDL_CreateTextureFromSurface(rend,catSurface);
    SDL_Rect rect;
    rect.x=0;   //三个用于设置坐标
    rect.y=0;
    rect.w=50000;//调节图片的宽度
    rect.h=20000;//高度
    SDL_Event event;
    bool quit =false;
    while(quit==false){
        while(SDL_PollEvent(&event)){
            if(event.type==SDL_QUIT) {
                quit=true;    //调节至可以关闭
             }
            else if (event.type==SDL_MOUSEMOTION){
               rect.x=event.motion.x-(rect.w/2);
                rect.y=event.motion.y-(rect.h/2);
             //   SDL_FillRect(surface,NULL,0);//更新图片(清除掉上一次的图片
               // SDL_BlitSurface(qq1,NULL,surface,&rect);//画图
             SDL_RenderClear(rend);
             SDL_RenderCopy(rend,qq1,NULL,&rect);//贴图


                SDL_UpdateWindowSurface(window);//更新窗口才可以显示图片


            }
        }
        SDL_Delay(10); //防止电脑CPU过度的运行
        SDL_RenderClear(rend);
        SDL_RenderCopy(rend,qq1,NULL,&rect);
        SDL_RenderPresent(rend);
    }


    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}     

3:自动移动位置

//先声明一些变量

bool moveright =true;
bool moveleft =true;
bool movedown =true;
bool moveup =true;

//下面这个函数为自动移动的函数

if (moveright==true){
        rect.x++;
        if(rect.x+rect.w>=800){
            moveright=false;
        }
    }
    else {
        rect.x--;
        if(rect.x<=0){
            moveright=true;
        }
    }
     if (movedown==true){
        rect.y++;
        if(rect.x+rect.h>=800){
            movedown=false;
        }
    }
    else {
        rect.y--;
        if(rect.y<=0){
            movedown=true;
        }
    }

//PS这个函数有一个重要的地方就是自己加载进去的图片的长和宽一定要一样否则不会达到来回效果 rect.w=200;//大小一定要一样才能在后面的不会出现错误
    rect.h=200;

0 0
原创粉丝点击