Problemas con Pixels vs Twips en VBasic
Publicado por X-Paw-M (1 intervención) el 12/02/2003 01:52:08
Estoy intentando desarroyar un Tetris en VBasic para lo cual he hecho una Sub que dibuja un cuadro en pantalla y le da efectos gráficos (volumen) el código es el siguiente:
Sub Dibuja(ByVal X As Integer, ByVal Y As Integer)
With Bloques
'Bloques es un Type que contiene Tamaño del cuadro
'% de los adornos o efecto volumen en el cuadro dibujado
'y color RGB del cuadro
Tetris.Line (X, Y)-(X + .Tamaño, Y + .Tamaño), RGB(.R, .G, .B), BF
'con esto hago un cuadro en las coordenadas pasadas
'del tamaño Bloques.Tamaño
If .Adornos > 0 Then
Dim Z As Byte
For Z = 0 To (.Adornos * .Tamaño / 100)
'Este bucle genera los "adornos"
Tetris.Line (X + Z, Y + Z)-(X - Z + .Tamaño, Y + Z), ToWhite(.R, .G, .B, 25)
Tetris.Line (X + Z, Y - Z + .Tamaño)-(X - Z + .Tamaño, Y - Z + .Tamaño), ToBlack(.R, .G, .B, 25)
Tetris.Line (X + Z, Y + Z)-(X + Z, Y - Z + .Tamaño), ToWhite(.R, .G, .B, 35)
Tetris.Line (X - Z + .Tamaño, Y + Z)-(X - Z + .Tamaño, Y - Z + .Tamaño), ToBlack(.R, .G, .B, 35)
Next Z
End If
End With
End Sub
Los problemas que se me plantean son los siguientes, cuando defino Bloques.Tamaño como 15 (por ejemplo) en pantalla se dibuja un cuadro de 13x13 pixels ¿por que? (el ScaleMode del Form Tetris es "3 - Pixel"), si lo que le pido al formulario es:
Line(X,Y)-(X+Bloques.Tamaño,Y+Bloques.Tamaño)
Debería ser un cuadro de 15x15 a mi entender, otro misterio que me está quebrando la cabeza es que al usar la Sub Dibuja (del Módulo Cuadro) en un bucle del tipo:
For X=0 to Tamaño*22 step Tamaño
Cuadro.Dibuja(X,0)
Next X
Se me superpone la primera columna de cada cuadro sobre la anterior y por mucho que le doy vueltas, no me explico por que, si alguien está interesado en echarme un cable, puedo pasarle el código fuente para que haga pruebas en su casa.
Gracias por vuestra atención.
Sub Dibuja(ByVal X As Integer, ByVal Y As Integer)
With Bloques
'Bloques es un Type que contiene Tamaño del cuadro
'% de los adornos o efecto volumen en el cuadro dibujado
'y color RGB del cuadro
Tetris.Line (X, Y)-(X + .Tamaño, Y + .Tamaño), RGB(.R, .G, .B), BF
'con esto hago un cuadro en las coordenadas pasadas
'del tamaño Bloques.Tamaño
If .Adornos > 0 Then
Dim Z As Byte
For Z = 0 To (.Adornos * .Tamaño / 100)
'Este bucle genera los "adornos"
Tetris.Line (X + Z, Y + Z)-(X - Z + .Tamaño, Y + Z), ToWhite(.R, .G, .B, 25)
Tetris.Line (X + Z, Y - Z + .Tamaño)-(X - Z + .Tamaño, Y - Z + .Tamaño), ToBlack(.R, .G, .B, 25)
Tetris.Line (X + Z, Y + Z)-(X + Z, Y - Z + .Tamaño), ToWhite(.R, .G, .B, 35)
Tetris.Line (X - Z + .Tamaño, Y + Z)-(X - Z + .Tamaño, Y - Z + .Tamaño), ToBlack(.R, .G, .B, 35)
Next Z
End If
End With
End Sub
Los problemas que se me plantean son los siguientes, cuando defino Bloques.Tamaño como 15 (por ejemplo) en pantalla se dibuja un cuadro de 13x13 pixels ¿por que? (el ScaleMode del Form Tetris es "3 - Pixel"), si lo que le pido al formulario es:
Line(X,Y)-(X+Bloques.Tamaño,Y+Bloques.Tamaño)
Debería ser un cuadro de 15x15 a mi entender, otro misterio que me está quebrando la cabeza es que al usar la Sub Dibuja (del Módulo Cuadro) en un bucle del tipo:
For X=0 to Tamaño*22 step Tamaño
Cuadro.Dibuja(X,0)
Next X
Se me superpone la primera columna de cada cuadro sobre la anterior y por mucho que le doy vueltas, no me explico por que, si alguien está interesado en echarme un cable, puedo pasarle el código fuente para que haga pruebas en su casa.
Gracias por vuestra atención.
Valora esta pregunta


0