Buenas!.
Pues este es el ejemplo que quería mostraros el efecto que hace la letra, cuando se añade más velocidad o menos velocidad, su scroll horizontal.
Para cambiar la dirección del texto se tiene que cambiar en este lugar:
El primer indice es el que debe modificar, la x, la y no.
Indice 0.
Código:
'Índice de velocidad negativo. El texto se desplaza a la izquierda
'Índice de velocidad positivo. El texto se desplaza a la derecha
Private velocidad As Integer[] = [3, 0]
Fuente:
Código:
Const TEXTO As String = "GAMBAS BASIC"
Const TAMAFUENTE As Integer = 36
Private posicion As Integer[] = [0, 0]
'Índice de velocidad negativo. El texto se desplaza a la izquierda
'Índice de velocidad positivo. El texto se desplaza a la derecha
Private velocidad As Integer[] = [3, 0]
Private fuente As New Font
Private lineacentralactiva As Boolean = False 'Activamos/Desactivamos linea horizontal que divide DrawingArea
Public Sub Form_Open()
Dim ancho As Integer
Dim alto As Integer
With Me
.Title = "MARQUESINA"
.Background = Color.Black
.Center()
End With
Pizarra.Background = Color.Black
fuente.Name = "Monospace"
fuente.Size = TAMAFUENTE
ancho = fuente.TextWidth(TEXTO)
alto = fuente.TextHeight(TEXTO)
posicion[1] = (Pizarra.H - alto) / 2
Timer1.Delay = 16
Timer1.Start
End
Public Sub DibujarTextoCentrado()
Dim RS As RectF
If lineacentralactiva Then
Paint.LineWidth = 1
Paint.MoveTo(0, Pizarra.H / 2)
Paint.LineTo(Pizarra.W, Pizarra.H / 2)
Paint.Stroke
Endif
Paint.Translate(posicion[0], posicion[1])
Paint.Font = Font[fuente.Name & "," & Str(fuente.Size)]
Paint.Background = Color.White
Paint.AntiAlias = True
RS = Paint.TextSize(TEXTO)
Paint.Text(TEXTO, RS.X, RS.Y, RS.Width, RS.Height)
posicion[0] += velocidad[0]
posicion[1] += velocidad[1]
If velocidad[0] < 0 Then
'El texto reaaparecerá por la derecha del DrawingArea
If posicion[0] + RS.W < 0 Then
'Restamos al ancho del DrawingArea el ancho de una letra
posicion[0] = Pizarra.W - Paint.TextSize("G").W
Endif
Else If velocidad[0] > 0 Then
'El texto reaaparecerá por la izquierda del DrawingArea
If posicion[0] + Paint.TextSize("G").W > Pizarra.W Then
'Restamos al ancho de una letra el ancho total del texto
posicion[0] = Paint.TextSize("G").W - RS.W
Endif
Endif
Paint.Fill
End
Public Sub Pizarra_Draw()
DibujarTextoCentrado
End
Public Sub Timer1_Timer()
Pizarra.Refresh
End
He usado Paint.Antialias pero no sé si realmente hace algo.
Tendría que ver si el sitio donde lo he situado es el adecuado.
Hay momentos que la letra parece "desgarrarse". ( Diente de sierra )
Probar a cambiar la velocidad, a hacerla negativa, etc.
Os subo el ejemplo.
Supongo que son limitaciones.
Saludos