elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:25  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  fondo sdl con foto
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: fondo sdl con foto  (Leído 1,014 veces)
peterfly

Desconectado Desconectado

Mensajes: 74


Ver Perfil
fondo sdl con foto
« en: 23 Septiembre 2011, 15:52 »

teniendo el codigo:
Código:
#include <stdio.h>
#include <SDL/SDL.h>
void imprimir_rectangulo (SDL_Surface *screen, int x, int y);
int main(int argc, char *argv[])
{
SDL_Surface *screen;
SDL_Event event;
if (SDL_Init(SDL_INIT_VIDEO) == -1)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
screen = SDL_SetVideoMode(320, 240, 16, SDL_SWSURFACE);
if (screen == NULL)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
SDL_WM_SetCaption("Ejemplo básico", NULL);
imprimir_rectangulo(screen, 20, 30);
while (SDL_WaitEvent(&event))
{
if (event.type == SDL_QUIT)
break;
}
SDL_Quit();
return 0;
}
void imprimir_rectangulo (SDL_Surface *screen, int x, int y)
{
SDL_Rect rect = {x, y, 50, 50};
Uint32 a = SDL_MapRGB(screen->format, 255, 200, 100);
SDL_FillRect(screen, &rect, a);
SDL_UpdateRect(screen, rect.x, rect.y, rect.w, rect.h);
}


como puedo poner una foto envez del cuadrado???
se que seria dando un enlace a donde esta la foto en mi pc... pero como se ace no lo se

me podeis ayudar??

gracias


« Última modificación: 23 Septiembre 2011, 16:28 por peterfly » En línea
Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: fondo sdl con foto
« Respuesta #1 en: 23 Septiembre 2011, 22:21 »

Ok lo primero que tienes que hacer es crear una superficie nueva con :

SDL_Surface * ejemplo

después tienes que asignarle a la capa la imagen así

ejemplo = SDL_LoadBMP ("ejemplo.bmp")//las comillas van incluidas

una vez que le asignes a la superficie la imagen hay que cargarla  así

SDL_BlitSurface (ejemplo , NULL, screen, Rect);
el primer parametro es la imagen,el segundo no me acuerdo ejjeje lo siento,el tercero
osea screen es la pantalla a la cual la vamos a volcar y rect son las coordenadas de la imagen .

una vez echo esto tienes que colocar esto:

SDL_Flip (screen);

esta función es para dibujar la imagen en la pantalla,el paramento que esta entre paréntesis es la superficie donde quieres dibujarla.

probablemente cuando dibujes la imagen en pantalla en caso de ser un sprite se vera rodeada de un cuadrado de algun color para que esto no se vea tienes que poner antes de :

SDL_BlitSurface (ejemplo , NULL, screen, Rect);

SDL_SetColorKey(ejemplo,SDL_SRCCOLORKEY,SDL_MapRGB(ejemplo>format,255,0,255));

es para que ese color no aparezca por que el primer parámetro es a la superficie a la que se la quieres aplicar el segundo parámetro es que quieres que un determinado color no aparezca y luego especificas el color que no quieres que aparezca y ya está espero que te haya servido =)


En línea
peterfly

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: fondo sdl con foto
« Respuesta #2 en: 23 Septiembre 2011, 22:31 »

muchisimas gracias compañero voy a probarlo
En línea
peterfly

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: fondo sdl con foto
« Respuesta #3 en: 24 Septiembre 2011, 00:03 »

problema resuelto!!!

Código:
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
/* se incluye SDL_image.h para los metodos de
carga de imagenes */
#include <SDL/SDL_image.h>
/* metodo que permite cargar imagenes y las devuelve
como SDL_Surface */
SDL_Surface* cargarImagen(char *rejilla)
{
/* SDL tiene metodos para cargar cada tipo de imagen
BMP,PCX,JPG,GIF,etc. pero este metodo (IMG_Load())
automaticamente carga imagenes sin preguntar el tipo*/
SDL_Surface *image = IMG_Load(rejilla);
return image;
}
/* metodo que permite dibujar una *imagen previamente cargada
(con cargarImagen()), y dibujarla en una superficie dada
(en este caso *screen), en la posicion (x,y)*/
void dibujaImagen(SDL_Surface *screen, SDL_Surface *imagen, int x, int y)
{
/* se crea un rectangulo */
SDL_Rect rect;
/* se le asigna donde empieza en x el rectangulo */
rect.x=x;
/* se le asigna donde empieza en y el rectangulo */
rect.y=y;
/* se pega la imagen sobre screen de acuerdo a
la posicion del rectangulo */
SDL_BlitSurface(imagen, 0, screen, &rect);
}
int main(int argc, char *argv[])
{
SDL_Surface* screen;
if (SDL_Init(SDL_INIT_VIDEO)<0)
{
printf("Error al iniciar SDL:: %s",SDL_GetError());
return -1;
}
screen = SDL_SetVideoMode(640,480,16,SDL_HWSURFACE|SDL_RESIZABLE);
if (!screen)
{
printf("Error al iniciar el contexto SDL:: %s",SDL_GetError());
return -1;
}
SDL_WM_SetCaption(":: Carga de imagen con SDL ::",NULL);
/* llamamos al metodo para que cargue la imagen "foto.jpg" */
SDL_Surface* img = cargarImagen("rejilla.jpg");
/* preguntamos si realmente se cargo la imagen */
if (!img)
{
/* si nose cargo, salimos del programa */
printf("No se pudo cargar la imagen: %s",SDL_GetError());
return -1;
}
/* llamamos al otro metodo para que dibuje la imagen (*img)
sobre nuestra superficie buffer (*screen), en la posicion
100,100
*/
dibujaImagen(screen, img, 100, 100);
/* Este metodo tomara todos los cambios que se han hecho sobre
la superficie buffer(*screen), y las desplegara por pantalla
*/
SDL_Flip(screen);
SDL_Delay(5000);
return 1;
}
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fondo blanco o fondo negro « 1 2 »
Dudas Generales
limalimon1 16 1,805 Último mensaje 26 Noviembre 2004, 04:29
por limalimon1
foto.exe:Cura para el virus foto.exe (banker.bsx)
Seguridad
kasador_one 2 856 Último mensaje 18 Enero 2006, 20:32
por kasador_one
Como pongo una foto de fondo en la terminal MANUAL
GNU/Linux
crauss 2 397 Último mensaje 12 Mayo 2008, 07:02
por Mayacker
Imágen con texto y foto de fondo y al estilo gótico?
Diseño Gráfico
nichihack 6 5,729 Último mensaje 5 Julio 2008, 16:57
por nichihack
Foto que linka a otra foto[HTML]
Desarrollo Web
Dreewzt 2 596 Último mensaje 1 Abril 2009, 18:14
por Dreewzt
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines