elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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

Desconectado Desconectado

Mensajes: 94


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

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 pm 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 pm »

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: 94


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

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

peterfly

Desconectado Desconectado

Mensajes: 94


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

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
foto montajes « 1 2 3 4 »
Diseño Gráfico
diosa_de_fuego 30 10,744 Último mensaje 23 Octubre 2003, 08:18 am
por diosa_de_fuego
Imágen con texto y foto de fondo y al estilo gótico?
Diseño Gráfico
nichihack 6 9,897 Último mensaje 5 Julio 2008, 16:57 pm
por nichihack
foto
Hacking
Chrisri 1 1,711 Último mensaje 28 Febrero 2023, 17:08 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines