Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Crear Una Ventana Con Sólo Las Funciones Externas De SDL
Autor Mensaje
Responder citando   Descargar mensaje 
Mensaje Crear Una Ventana Con Sólo Las Funciones Externas De SDL 
 
Hola amigosss,  
el siguiente simple código creará una ventana (secundaria al Formulario) con sólo las funciones externas de la librería SDL.
La ventana contendrá una imagen, un cuadrado de color amarillo y un texto.

Public Struct SDL_Rect
  x As Short
  y As Short
  w As Short
  h As Short
End Struct

Private Const SDL_INIT_VIDEO As Byte = 32
Private Const SDL_HWSURFACE As Byte = 1
Private Const SDL_DOUBLEBUF As Integer = 1073741824
Private video As Pointer

Library "libSDL-1.2:0.11.4"
Private Extern SDL_Init(flags As Integer) As Integer
Private Extern SDL_SetVideoMode(width As Integer, height As Integer, bitsperpixel As Integer, flags As Integer) As Pointer
Private Extern SDL_Delay(ms As Integer)
Private Extern SDL_FreeSurface(surface As Pointer)
Private Extern SDL_Quit()

Private Extern SDL_RWFromFile($file As String, mode As String) As Pointer
Private Extern SDL_LoadBMP_RW(image As Pointer, freesrc As Integer) As Pointer
Private Extern SDL_UpperBlit(image As Pointer, srcrect As Pointer, dst As Pointer, dstrect As SDL_Rect) As Integer In "libSDL_image-1.2:0.8.4"
Private Extern SDL_UpdateRect(sdlsurface As Pointer, x As Integer, y As Integer, w As Integer, h As Integer)
Private Extern SDL_Flip(sdlsurface As Pointer)
Private Extern SDL_FillRect(sdlsurface As Pointer, dstrect As SDL_Rect, color As Integer)

Library "libSDL_ttf-2.0:0.10.1"
Private Extern TTF_Init() As Integer
Private Extern TTF_OpenFont(nomefont As String, ptsize As Integer) As Pointer
Private Extern TTF_RenderText_Blended(fontP As Pointer, text As String, fg As Integer) As Pointer
Private Extern SDL_WM_SetCaption(title As String, icon As String)
Private Extern TTF_Quit()


Public Sub Button1_Click()

 Dim fl, imago, font, testo As Pointer
 Dim riquadro As New SDL_Rect


  SDL_Init(SDL_INIT_VIDEO)

  video = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE Or SDL_DOUBLEBUF)

' Carga un imagen en la ventana:
  fl = SDL_RWFromFile("/direccion/de/la/imagen.bmp", "rb")

  imago = SDL_LoadBMP_RW(fl, 1)

  SDL_UpperBlit(imago, Null, video, Null)

  SDL_UpdateRect(video, 0, 0, 0, 0)


' Fija un titulo textual a la ventana:
  SDL_WM_SetCaption("Titulo de la ventana", Null)


' Se procede con la configuración de un texto sobre la superficie de la ventana:
  TTF_Init()

  font = TTF_OpenFont("/direccion/del/font.ttf", 15)

  testo = TTF_RenderText_Blended(font, "texto cualquier", 3329329)


' Se procede a la fijación de 300x300 píxeles en la ventana y por encima de la imagen:
  With riquadro
    .x = 0
    .y = 0
    .w = 300
    .h = 300
  End With

' El cuadrado será de color amarillo:
  SDL_FillRect(video, riquadro, &FFFF00)

' El cuadrado que contiene el texto, sin embargo, se colocará en la superficie de la ventana a una posición determinada por las coordenadas X e Y:
  With riquadro
     .x = 30
     .y = 50
  End With

  SDL_UpperBlit(testo, Null, video, riquadro)
  
  SDL_Flip(video)

End


Public Sub Button2_Click()  ' Cierra todas las interfaces de SDL y destruye la ventana

  TTF_Quit()

  SDL_FreeSurface(video)

  SDL_Quit()

End



Referencias:
La página que escribí (en italiano) en la wiki de gambas-it.org:
http://www.gambas-it.org/wiki/index..._del_API_di_SDL

 



 
última edición por vuott el Miercoles, 09 Abril 2014, 22:08; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron