none
Ayuda con lo siguiente para créditos RRS feed

  • Pregunta

  • Hola, quisiera saber como puedo hacer que el label donde están todos los nombres como vemos aquí, se muevan automaticamente, o por ejemplo mejor

    Créditos.

    Leandro Prueba 1

    Beta Tester

    Leandro 2

    Por ejemplo, que salga el texto principal el negrita y los que han participado el proyecto el letra normal sin negrita.

    Aquí pongo un ejemplo.

    Espero una respuesta. Gracias

    jueves, 7 de junio de 2012 15:47

Respuestas

  • Hola

    Haber si te sirve esto

    Public Class Form1
    
        Class Titulos
    
            Public titulo As String
            Public Fuente As Font
    
            Public Sub New(titulo As String, fuente As Font)
                Me.titulo = titulo
                Me.Fuente = fuente
            End Sub
    
        End Class
    
        Private Lista As New List(Of Titulos)
        Private YY As Integer
        Dim Time As Timer
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            YY = 0
            Lista.Clear()
            Lista.Add(New Titulos("Participantes", New Font("Consolas", 12, FontStyle.Bold)))
    
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
            Lista.Add(New Titulos(" ", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Interpretes", New Font("Consolas", 12, FontStyle.Bold)))
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
    
            Time = New Timer
    
            Time.Interval = 200
            Time.Enabled = True
    
            AddHandler Time.Tick, AddressOf Timer1_Tick
    
        End Sub
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs)
    
            YY -= 2
    
            Dim y As Integer
    
            Dim ima As Image = New Bitmap(Me.Width, Me.Height)
            Dim gra As Graphics = Graphics.FromImage(ima)
    
            gra.Clear(Color.White)
    
            For Each i As Titulos In Lista
                Dim size As SizeF = gra.MeasureString(i.titulo, i.Fuente)
                y += CInt(size.Height)
                gra.DrawString(i.titulo, i.Fuente, Brushes.Black, 10, 10 + y + YY)
            Next
    
            Me.CreateGraphics.DrawImage(ima, 0, 0)
    
            If 10 + y + YY < -50 Then
                ' finalizamos la presentación
                RemoveHandler Time.Tick, AddressOf Timer1_Tick
            End If
    
        End Sub
    
       
    End Class

    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    martes, 12 de junio de 2012 22:46
  • agrega esto

        Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
            Time.Dispose()
    End Sub



    • Editado ToniAG miércoles, 13 de junio de 2012 16:36
    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    miércoles, 13 de junio de 2012 16:17
  • Cambia esta linea

    Me.CreateGraphics.DrawImage(ima, 0, 0)

    para que se muestre en un panel, agregas un panel al formulario y pones

    Panel1.CreateGraphics.DrawImage(ima, 0, 0)

    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    miércoles, 13 de junio de 2012 16:21
  • El codigo que puse es un ejemplo, faltaria pulir, te vuelvo a poner el codigo, con algunos cambios

        Class Titulos
    
            Public titulo As String
            Public Fuente As Font
    
            Public Sub New(titulo As String, fuente As Font)
                Me.titulo = titulo
                Me.Fuente = fuente
            End Sub
    
        End Class
    
        Private ima As Bitmap
        Private gra As Graphics
        Private Lista As New List(Of Titulos)
        Private YY As Integer
        Private Time As Timer
    
        Private Sub Form1_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            Time.Dispose()
            ima.Dispose()
            gra.Dispose()
        End Sub
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            Lista.Add(New Titulos("Participantes", New Font("Consolas", 12, FontStyle.Bold)))
    
            Lista.Add(New Titulos("Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Nombre 2", New Font("Consolas", 11)))
            Lista.Add(New Titulos(" ", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Interpretes", New Font("Consolas", 12, FontStyle.Bold)))
            Lista.Add(New Titulos("Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Nombre 2", New Font("Consolas", 11)))
    
            ima = New Bitmap(Panel1.Width, Panel1.Height)
            gra = Graphics.FromImage(ima)
    
            Time = New Timer
    
            Time.Interval = 50
            Time.Enabled = True
    
            AddHandler Time.Tick, AddressOf Timer1_Tick
    
        End Sub
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs)
    
            YY -= 2
    
            Dim Y As Integer, Tamaño As SizeF
    
            gra.Clear(Me.BackColor) ' color del formulario
    
            For Each i As Titulos In Lista
                Tamaño = gra.MeasureString(i.titulo, i.Fuente)
                Y += CInt(Tamaño.Height)
    
                gra.DrawString(i.titulo, i.Fuente, Brushes.Black, Me.Panel1.Width \ 2 - CLng(Tamaño.Width) \ 2, 10 + Y + YY)
            Next
    
            Panel1.CreateGraphics.DrawImage(ima, 0, 0)
    
            If YY + Y + Tamaño.Height < 0 Then
                YY = Panel1.Height - 30
            End If
    
        End Sub

    • Marcado como respuesta Symantecc jueves, 14 de junio de 2012 0:22
    miércoles, 13 de junio de 2012 23:39

Todas las respuestas

  • Hola, me pueden ayudar o necesitan más información?
    jueves, 7 de junio de 2012 17:14
  • Si explicas mas detalladamente lo que quieres tal vez podria colaborarte no he me ha quedado muy claro que es lo que quieres
    jueves, 7 de junio de 2012 19:53
  • Hola:
    Para eso que quieres hacer es mejor que uses un RichTextBox con las propiedades
    Multiline=True
    ScrollBars=Vertical
    En el RichTextBox puedes poner letras en negrita, subrayado etc y de distinto tamaño.

    Un saludo desde Bilbo
    Carlos

    viernes, 8 de junio de 2012 7:48
  • Hola gracias por responder.

    Ya lo puse, ahora el problema que no se mueve para arriba, tampoco se poner la negrita como dije y por otra parte deja escribir. Espero que me ayudes.

    Gracias

    sábado, 9 de junio de 2012 23:22
  • Agradecería que me contestasen por favor.

    Muchas gracias

    martes, 12 de junio de 2012 21:58
  • Hola

    Haber si te sirve esto

    Public Class Form1
    
        Class Titulos
    
            Public titulo As String
            Public Fuente As Font
    
            Public Sub New(titulo As String, fuente As Font)
                Me.titulo = titulo
                Me.Fuente = fuente
            End Sub
    
        End Class
    
        Private Lista As New List(Of Titulos)
        Private YY As Integer
        Dim Time As Timer
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            YY = 0
            Lista.Clear()
            Lista.Add(New Titulos("Participantes", New Font("Consolas", 12, FontStyle.Bold)))
    
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
            Lista.Add(New Titulos(" ", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Interpretes", New Font("Consolas", 12, FontStyle.Bold)))
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
    
            Time = New Timer
    
            Time.Interval = 200
            Time.Enabled = True
    
            AddHandler Time.Tick, AddressOf Timer1_Tick
    
        End Sub
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs)
    
            YY -= 2
    
            Dim y As Integer
    
            Dim ima As Image = New Bitmap(Me.Width, Me.Height)
            Dim gra As Graphics = Graphics.FromImage(ima)
    
            gra.Clear(Color.White)
    
            For Each i As Titulos In Lista
                Dim size As SizeF = gra.MeasureString(i.titulo, i.Fuente)
                y += CInt(size.Height)
                gra.DrawString(i.titulo, i.Fuente, Brushes.Black, 10, 10 + y + YY)
            Next
    
            Me.CreateGraphics.DrawImage(ima, 0, 0)
    
            If 10 + y + YY < -50 Then
                ' finalizamos la presentación
                RemoveHandler Time.Tick, AddressOf Timer1_Tick
            End If
    
        End Sub
    
       
    End Class

    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    martes, 12 de junio de 2012 22:46
  • Hola

    Haber si te sirve esto

    Public Class Form1
    
        Class Titulos
    
            Public titulo As String
            Public Fuente As Font
    
            Public Sub New(titulo As String, fuente As Font)
                Me.titulo = titulo
                Me.Fuente = fuente
            End Sub
    
        End Class
    
        Private Lista As New List(Of Titulos)
        Private YY As Integer
        Dim Time As Timer
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            YY = 0
            Lista.Clear()
            Lista.Add(New Titulos("Participantes", New Font("Consolas", 12, FontStyle.Bold)))
    
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
            Lista.Add(New Titulos(" ", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Interpretes", New Font("Consolas", 12, FontStyle.Bold)))
            Lista.Add(New Titulos("  Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("  Nombre 2", New Font("Consolas", 11)))
    
            Time = New Timer
    
            Time.Interval = 200
            Time.Enabled = True
    
            AddHandler Time.Tick, AddressOf Timer1_Tick
    
        End Sub
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs)
    
            YY -= 2
    
            Dim y As Integer
    
            Dim ima As Image = New Bitmap(Me.Width, Me.Height)
            Dim gra As Graphics = Graphics.FromImage(ima)
    
            gra.Clear(Color.White)
    
            For Each i As Titulos In Lista
                Dim size As SizeF = gra.MeasureString(i.titulo, i.Fuente)
                y += CInt(size.Height)
                gra.DrawString(i.titulo, i.Fuente, Brushes.Black, 10, 10 + y + YY)
            Next
    
            Me.CreateGraphics.DrawImage(ima, 0, 0)
    
            If 10 + y + YY < -50 Then
                ' finalizamos la presentación
                RemoveHandler Time.Tick, AddressOf Timer1_Tick
            End If
    
        End Sub
    
       
    End Class

    Hola, si mi sirvio!! Pero hay un problema, en vez de mostrarlo en el cuadro que me indicaron, lo muestra como en el fondo del formulario, ¿Qué hago?

    Gracias :P

    miércoles, 13 de junio de 2012 16:06
  • Otra cosa, cuando cierro el formulario, me sale excepción es esta parte

    " Me.CreateGraphics.DrawImage(ima, 0, 0) "

    miércoles, 13 de junio de 2012 16:11
  • agrega esto

        Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
            Time.Dispose()
    End Sub



    • Editado ToniAG miércoles, 13 de junio de 2012 16:36
    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    miércoles, 13 de junio de 2012 16:17
  • Cambia esta linea

    Me.CreateGraphics.DrawImage(ima, 0, 0)

    para que se muestre en un panel, agregas un panel al formulario y pones

    Panel1.CreateGraphics.DrawImage(ima, 0, 0)

    • Marcado como respuesta Symantecc miércoles, 13 de junio de 2012 22:03
    miércoles, 13 de junio de 2012 16:21
  • ¡Gracias me sirvio! Una última cosa, ¿Cómo puedo hacer que se repita y vaya un poco más ligero, como los créditos del antivirus kaspersky?

    Gracias!

    miércoles, 13 de junio de 2012 22:03
  • Hola

    Cambia el valor YY -= 2 por un valor mas alto o cambia el valor Time.Interval = 200 por un valor inferior y conseguiras que vaya mas rapido

    Para que repita puedes cambiar esta linea

            If 10 + y + YY < -50 Then

                 YY=0 ' Panel1.Height
          
    End If

    Utiliza un control Timer, cada vez que se llama al evento del timer, la variable YY va restando 2 o el valor que le asignes, al comienzo esta en 0, pero le puedes poner otro valor si quieres que empiece desde otra posición, por ejemplo podrías poner YY = Panel1.Height (Ventana donde sale los nombres) y comenzara a salir los nombres desde la parte inferior de la ventana




    • Editado ToniAG miércoles, 13 de junio de 2012 22:27
    miércoles, 13 de junio de 2012 22:24
  • Lo del intervalo lo hice, pero no se me repite esto. Espero que puedas ayudarme y otra cosa como puedo indicarle el panel 1 trasparente porque lo tiene pero con esto lo pone solo automáticamente en blanco.

    Y otra cosa, como puedo hacer vaya todo centrado las letras que vaya al centro.

    Gracias


    • Editado Symantecc miércoles, 13 de junio de 2012 22:56
    miércoles, 13 de junio de 2012 22:42
  • El codigo que puse es un ejemplo, faltaria pulir, te vuelvo a poner el codigo, con algunos cambios

        Class Titulos
    
            Public titulo As String
            Public Fuente As Font
    
            Public Sub New(titulo As String, fuente As Font)
                Me.titulo = titulo
                Me.Fuente = fuente
            End Sub
    
        End Class
    
        Private ima As Bitmap
        Private gra As Graphics
        Private Lista As New List(Of Titulos)
        Private YY As Integer
        Private Time As Timer
    
        Private Sub Form1_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            Time.Dispose()
            ima.Dispose()
            gra.Dispose()
        End Sub
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            Lista.Add(New Titulos("Participantes", New Font("Consolas", 12, FontStyle.Bold)))
    
            Lista.Add(New Titulos("Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Nombre 2", New Font("Consolas", 11)))
            Lista.Add(New Titulos(" ", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Interpretes", New Font("Consolas", 12, FontStyle.Bold)))
            Lista.Add(New Titulos("Nombre 1", New Font("Consolas", 11)))
            Lista.Add(New Titulos("Nombre 2", New Font("Consolas", 11)))
    
            ima = New Bitmap(Panel1.Width, Panel1.Height)
            gra = Graphics.FromImage(ima)
    
            Time = New Timer
    
            Time.Interval = 50
            Time.Enabled = True
    
            AddHandler Time.Tick, AddressOf Timer1_Tick
    
        End Sub
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs)
    
            YY -= 2
    
            Dim Y As Integer, Tamaño As SizeF
    
            gra.Clear(Me.BackColor) ' color del formulario
    
            For Each i As Titulos In Lista
                Tamaño = gra.MeasureString(i.titulo, i.Fuente)
                Y += CInt(Tamaño.Height)
    
                gra.DrawString(i.titulo, i.Fuente, Brushes.Black, Me.Panel1.Width \ 2 - CLng(Tamaño.Width) \ 2, 10 + Y + YY)
            Next
    
            Panel1.CreateGraphics.DrawImage(ima, 0, 0)
    
            If YY + Y + Tamaño.Height < 0 Then
                YY = Panel1.Height - 30
            End If
    
        End Sub

    • Marcado como respuesta Symantecc jueves, 14 de junio de 2012 0:22
    miércoles, 13 de junio de 2012 23:39
  • ¡¡Perfecto!! muchas gracias, si pudiera agradecertelo en algo dimelo :D
    jueves, 14 de junio de 2012 0:22