Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Error con rotaciones

Iniciado por Hechelion, 16 de Noviembre de 2008, 12:11:47 AM

« anterior - próximo »

Hechelion

Buenas Ex3. Me parece que he encontrado un nuevo error, aunque me gustaría tu opinión.

Tratando de colocarle imágenes para los bordes del control me tope con el siguiente problema:

Draw_MapEx(MapaBorde, PosX, PosY, Zbuffer, Borde.Width, Borde.height, 0, ....) <-- aquí todo bien
Draw_MapEx(MapaBorde, PosX, PosY, Zbuffer,Borde.Width, Borde.height + 100 , 0, ....) <-- acá todo funciona de maravilla, me dibuja el mapa en (PosX + PosY) y me lo alarga en 100 pixel

Draw_MapEx(MapaBorde, PosX, PosY, Zbuffer, Borde.Width, Borde.height, 90, ....) <-- aquí todo bien, me dibuja la imagen rotada 90 grados en la posición ()PosX, PosY)
Draw_MapEx(MapaBorde, PosX, PosY, Zbuffer, Borde.Width, Borde.height + 100, 90, ....)  <-- "Peligro, Will Robinson...", me rota la imagen, la ensancha +100 pixel y le CAMBIA la posición al eje X

[EX3]

Esto es una de las mofificaciones de la nueva version. Al rotar ya no se rota obligatoriamente tomando el centro de la imagen como punto de rotacion si no que por defecto es la coordenada 0,0 de la imagen. Se puede rotar sobre el centro de la imagen activando el ultimo parametro de DRAW_MapEx() o bien indicando cualquier coordenada mediante DEVICE_SetDrawCenter() antes de llamar a DRAW_MapEx().

En resumen, que el comportamiento que me describes es totalmente correcto :) Para que veas lo que te comento sobre la rotacion prueba este codigo:
Option Explicit

Private Graphics As dx_GFX_Class ' Instancia del objeto grafico de dx_lib32.
Private Render As Boolean ' Controla el bucle de renderizado.
Private Texture As Long ' Identificador de la textura.

Private Angle As Single

Private Sub Form_Load()
    Me.Show ' Forzamos al formulario a mostrarse.
    Set Graphics = New dx_GFX_Class ' Creamos la instancia del objeto grafico.
    Render = Graphics.Init(Me.hWnd, 640, 480, 32, True) ' Inicializamos el objeto grafico y el modo de video.
    Texture = Graphics.MAP_Load(App.Path & "\texture.png", 0) ' Cargamos la textura para el sprite.
   
    Do While Render
        Graphics.DRAW_MapEx Texture, 200, 200, 0, 100, 200, Angle, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, False
       
        Angle = Angle + 0.05
        If Angle > 359 Then Angle = 0
       
        Graphics.Frame ' Renderizamos la escena.
    Loop
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Graphics.MAP_Unload Texture ' Descargamos la textura de memoria.
    Render = False ' Termina el bucle de renderizado.
    Graphics.Terminate ' Terminamos la ejecucion de la clase grafica y liberamos los recursos utilizados.
    Set Graphics = Nothing ' Destruimos la instancia del objeto grafico.
End Sub

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.