Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





ayuda como utilizar el capture screen

Iniciado por GaRdo, 29 de Marzo de 2010, 06:13:49 AM

« anterior - próximo »

GaRdo

ola estoy hace un tiempo programando en esta libreria.. la verdad me gusta mucho, e realizado varios juegos pero ninguno terminado por completo siempre antes de terminar uno comienzo otro mas ambicioso

bueno si algien me puede ayudar kiero ultizar el capure screen o pantallazo...

e intentado con el Graphics.SURF_ScreenCapture supongo que es ese pero luego no puedo mostrarlo...

saludos :)

[EX3]

Buenas.
Cita de: GaRdo en 29 de Marzo de 2010, 06:13:49 AM
e intentado con el Graphics.SURF_ScreenCapture supongo que es ese pero luego no puedo mostrarlo...
Como indica la documentacion, esta funcion lo que devuelve es una superficie y las superficies no son elementos que se puedan dibujar como los graficos/texturas. Tendras que convertir la superfice a grafico utilizando por ejemplo MAP_Create() y SURF_AdvCopyRectsToMap(). Seria algo como esto:
Dim gfx As New dx_GFX_Class
(...)
Dim surfCapture as Long, texCapture As Long
surfCapture = gfx.SURF_ScreenCapture()
texCapture = gfx.MAP_Create(gfx.Screen.Width, gfx.Screen.Height) ' Creamos un grafico/textura con un tamaño de imagen similar al del modo de video establecido. La textura se creara con un tamaño aproximado en potencia de 2.

Dim surfInfo As GFX_Info, srcRect As GFX_Rect
Call gfx.SURF_GetInfo(surfCapture, surfInfo) ' Obtenemos la informacion de la superficie.
srcRect.X = 0
srcRect.Y = 0
srcRect.Width = surfInfo.Wdith ' Anchura de la superfice en memoria.
srcRect.Height = surfInfo.Height ' Altura de la superficie en memoria.

Dim texInfo As GFX_Info, destRect As GFX_Rect
Call gfx.MAP_GetInfo(texCapture, texInfo) ' Obtenemos la informacion de la textura creada.
destRect.X = 0
destRect.Y = 0
destRect.Width = texInfo.Wdith ' Anchura real de la textura en memoria.
destRect.Height = texInfo.Height ' Altura real de la textura en memoria.

' Copiamos la superficie a la textura:
Call gfx.SURF_AdvCopyRectsToMap(surfCapture, texCapture, srcRect, destRect)

' Eliminamos la superfice:
Call gfx.SURF_Unload(surfCapture)

Esto lo que hace es copiar todos los pixeles de la superficie que te devuelve la captura de pantalla en el grafico/textura que hemos creado. Ten en cuenta que la captura perdera algo de calidad al traspasarla a la textura ya que la textura trabaja con tamaños potencia de 2 que no suelen coincidir con el tamaño del modo de video, por lo que este metodo copia la captura y la escala para adaptarla al tamaño real de la textura. Despues puedes dibujar la textura al tamaño que quieras pero seguramente se vera ligeramente suavizada. En el caso de que tu captura sea de 800x600 al tratar de crear una textura con ese tamaño internamente se creara con el siguiente tamaño acorde a una potencia de 2, que seria 1024x1024 aunque texInfo.Image_Width te devuelva 800 y texInfo.Image_Height te devuelva 600.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.