FCorvelo Posted August 17, 2012 at 03:24 PM Report Share #472629 Posted August 17, 2012 at 03:24 PM Boas! 🙂 Alguém sabe uma forma simples de mostrar imagens (de preferência no formato JPEG) numa "Consol Application"? Algo do género: escrevia a localização da imagem no programa e ela abria uma janela gráfica e mostrava a imagem nessa janela. Já tentei algumas bibliotecas que encontrei na Internet, mas pareceram-me muito complicadas para aquilo que eu quero. E alem disso não as consegui meter a funcionar :/ Obrigado desde já 😉 Link to comment Share on other sites More sharing options...
pikax Posted August 17, 2012 at 03:24 PM Report Share #472630 Posted August 17, 2012 at 03:24 PM (edited) allegro fica muito facil para fazer algo assim do genero, acho que na wiki tem um exemplo desses 🙂 Edited August 17, 2012 at 03:25 PM by pikax Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 17, 2012 at 03:25 PM Report Share #472631 Posted August 17, 2012 at 03:25 PM (edited) SDL http://www.libsdl.org/ para poderes abrir uma imagem em jpeg, terás de usar também a extensão SDL_image http://www.libsdl.org/projects/SDL_image/ #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <SDL/SDL_opengl.h> int main(int argc, char ** argv) { /* variaveis */ SDL_Surface * window = NULL, * image = NULL; SDL_Event event; int run = 1; /* iniciar SDL */ if (SDL_Init(SDL_INIT_VIDEO) != 0) { fprintf(stderr, "Erro a inicializar o SDL : %s\n", SDL_GetError()); return -1; } atexit(SDL_Quit); /* iniciar SDL_image */ if (IMG_Init(IMG_INIT_JPG) == 0) { fprintf(stderr, "Nao foi possivel inicializar o SDL_imagem para abrir ficheiros jpeg\n"); fprintf(stderr, "verifique se os dll's necessarios se encontram acessiveis\n"); exit(-3); } /* ler imagem do ficheiro */ if ((image = IMG_Load("imagem.jpg")) == NULL) { fprintf(stderr, "Nao foi possivel abrir o ficheiro jpeg %s\n", IMG_GetError()); exit(-4); } /* criar janela (cuidado com o tamanho ) */ if ((window = SDL_SetVideoMode(image->w, image->h, 32, 0)) == NULL) { fprintf(stderr, "Erro a inicializar a janela : %s\n", SDL_GetError()); exit(-2); } /* enviar a imagem para o buffer de apresentação */ SDL_BlitSurface(image, NULL, window, NULL); SDL_Flip(window); /* ciclo de vida da aplicação */ while (run) { /* ler eventos do SDL */ while (SDL_PollEvent(&event)) { /* se for evento de fechar a janela então terminar a aplicação */ if (event.type == SDL_QUIT) run = 0; } } /* libertar a memória da imagem (não é necessário para a janela) */ SDL_FreeSurface(image); /* limpeza do SDL_image e SDL */ IMG_Quit(); SDL_Quit(); return 0; } Edited August 17, 2012 at 03:44 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
FCorvelo Posted August 17, 2012 at 08:08 PM Author Report Share #472695 Posted August 17, 2012 at 08:08 PM Obrigado pelas respostas 🙂 Eu tenho alguma dificuldade em utilizar bibliotecas (talvez porque nunca aprendi realmente como funcionam). Será que me podiam explicar ou então indicar algum tutorial? Eu só sei utilizar aquelas que têm um ficheiro .lib. As outras acho que é preciso compilar, mas ainda não consegui encontrar informação concreta sobre isso :/ Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 17, 2012 at 08:10 PM Report Share #472696 Posted August 17, 2012 at 08:10 PM http://lazyfoo.net/SDL_tutorials/lesson01/index.php IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
FCorvelo Posted August 18, 2012 at 11:44 AM Author Report Share #472732 Posted August 18, 2012 at 11:44 AM Ah, então afinal eu sabia fazer. Tinha era feito o download do pack errado 😛 Vou tentar e depois dou noticias 🙂 Link to comment Share on other sites More sharing options...
FCorvelo Posted August 18, 2012 at 04:09 PM Author Report Share #472750 Posted August 18, 2012 at 04:09 PM Já consegui 😄 Mas há um problema. Nesse código que me deste como exemplo, o while que fica à espera do evento de fechar a janela fica a consumir muito processador. Então pensei em fazer um sleep de alguns segundos só para manter a janela aberta com a imagem, mas com o sleep aos fim de poucos segundos o programa deixa de responder. Sabes o que poderá ser? Também experimentei com a função SDL_Delay e faz o mesmo :/ Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 18, 2012 at 04:12 PM Report Share #472751 Posted August 18, 2012 at 04:12 PM sim ... o SDL foi feito para programas multimédia. existe eventos mas não é feito em C o que não é uma linguagem orientada a eventos, logo terás sempre o processador a correr. o que podes fazer é sim usar o SDL_Delay como disseste. ficaria algo deste genero: /* ciclo de vida da aplicação */ while (run) { /* ler eventos do SDL */ while (SDL_PollEvent(&event)) { /* se for evento de fechar a janela então terminar a aplicação */ if (event.type == SDL_QUIT) run = 0; } /* esperar meio segundo em cada frame */ SDL_Delay(500); } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
FCorvelo Posted August 18, 2012 at 07:34 PM Author Report Share #472774 Posted August 18, 2012 at 07:34 PM Assim já ficou melhor 🙂 Muito obrigado 😄 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now