• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zeroonnet

Mostrar imagem ou video

7 mensagens neste tópico

Boas, epa eu queria fazer com que o programa me abri-se uma imagem e a fecha-se passado um x de tempo, ou que então utiliza-se um player (que eu definia) e começa-se a por um filme e passado x segundos também desliga-se o player.

Se alguem poder ajudar era bom ;)

Fiquem Bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazer isso podes utilizar o Simple DirectMedia Layer, basicamente o que tens de fazer é iniciar uma janela:

/*
*      main.c
*
*      Copyright 2007 Triton <Portugal-a-Programar.org>
*/

#include <stdio.h>
#include <SDL/SDL.h>
#include "main.h"

int init(SDL_Surface *screen)
{
    // init SDL subsystems

    if(0 != SDL_Init(SDL_INIT_VIDEO))
    {
        printf("ERROR: unable to init SDL: %s\n", SDL_GetError());
        return FALSE;
    }

    screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );

    if(screen == NULL)
    {
        printf("ERROR: unable to init main window: %s\n", SDL_GetError());
        return FALSE;
    }

    SDL_WM_SetCaption(SCREEN_TITLE, NULL );

    atexit(SDL_Quit);

    return 0;
}

int clean(void)
{
    return 0;
}

int main(int argc, char** argv)
{
    // init SDL
    if( init(screen) == FALSE)
    {
        return 1;
    }

    // main game loop
    while(quit == FALSE)
    {
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
            {
                // quit the game
                quit = TRUE;
            }
        }
    }

    clean();

    return 0;
}

/*
*      main.h
*
*      Copyright 2007 Triton <Portugal-a-Programar.org>
*/

#define TRUE 0
#define FALSE -1

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
char *SCREEN_TITLE = "Imagem";

SDL_Surface *screen = NULL;
SDL_Surface *background = NULL;
SDL_Event event;

int quit = FALSE;

Depois utilizas a biblitoeca SDL_image para mostrar a imagem no ecrã, e por fim um SDL_Delay(segundos). ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vou ver disso :cheesygrin: thanks

EDIT:

outra duvida que tenho para não tar a criar outro topico ca vai...

tenho um numero do tipo 123456789

e queria tipo polo numa var p.ex numero e depois que desse para escolher só o primeiro numero dessa var depois o segundo e isso do tipo

printf("%d",numero) - fazer isto mas aparecer só o primeiro numero ou o segundo ou o terceiro...

Fiquem bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Isso é muito fácil de fazer... Experimenta fazer e vai postando o código para se comentar. Dar-te o código não tem piada nenhuma e não aprendes muito! :cheesygrin:

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o pedido dos numeros era pa outro code mas agora voltando ao da imagem tame a dar um erro:

//The headers
#include "SDL/SDL.h"
#include <string.h>

//The attributes of the screen 
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//The surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *load_image( std::string filename )
{
     //Temporary storage for the image that's loaded
     SDL_Surface* loadedImage = NULL;
     //The optimized image that will be used
     SDL_Surface* optimizedImage = NULL;
     //Load the image
     loadedImage = SDL_LoadBMP( filename.c_str() );
     //If nothing went wrong in loading the image
     if( loadedImage != NULL )
     {
         //Create an optimized image
         optimizedImage = SDL_DisplayFormat( loadedImage );
         //Free the old image
         SDL_FreeSurface( loadedImage );
     }
     //Return the optimized image 
     return optimizedImage;
}

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination )
{
     //Make a temporary rectangle to hold the offsets
     SDL_Rect offset;
     //Give the offsets to the rectangle
     offset.x = x;
     offset.y = y;
     //Blit the surface
     SDL_BlitSurface( source, NULL, destination, &offset );
}

int main( int argc, char* args[] )
{
    //Initialize all SDL subsystems
    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
    {
        return 1;
    }
    //Set up the screen 
    screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
    //If there was an error in setting up the screen
    if( screen == NULL )
    {
        return 1;
    }
    //Set the window caption
    SDL_WM_SetCaption( "Hello World", NULL );
    //Load the images
    message = load_image("teste.bmp");
    background = load_image("teste2.bmp");
    //Apply the background to the screen
    apply_surface( 0, 0, background, screen );
    //Apply the message to the screen
    apply_surface( 180, 140, message, screen );
    //Update the screen
    if( SDL_Flip( screen ) == -1 )
    {
        return 1;
    }
    //Wait 2 seconds
    SDL_Delay( 2000 );
    //Free the surfaces
    SDL_FreeSurface( message );
    SDL_FreeSurface( background );
    //Quit SDL
    SDL_Quit();
    //Return
    return 0;
}

Erros:

15 C:\Dev-Cpp\Projectos\SDL\main.c expected ')' before ':' token

C:\Dev-Cpp\Projectos\SDL\main.c In function 'SDL_main':

63 C:\Dev-Cpp\Projectos\SDL\main.c [Warning] assignment makes pointer from integer without a cast

64 C:\Dev-Cpp\Projectos\SDL\main.c [Warning] assignment makes pointer from integer without a cast

C:\Dev-Cpp\Projectos\SDL\Makefile.win [build Error]  [main.o] Error 1

o que é que está mal?

desculpem se for alguma coisa estupida mas eu ainda sou noob nisto :cheesygrin:

Fiquem Bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora sou eu que digo: estamos na secção de C, e não de C++ :D

Se quiseres fazer em C++, faz o que o JD557 disse.

Se queres continuar em C, ou mesmo em C++, como não estás a utilizar nada específico da classe string, troca

Já que não estás a utilizar nada da biblioteca string, troca

SDL_Surface *load_image( std::string filename )

por

SDL_Surface *load_image( char *filename )

e

loadedImage = SDL_LoadBMP( filename.c_str() );

por

loadedImage = SDL_LoadBMP( filename );

.

Os warnings não percebi...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora