Ayuda con un Label en C#

Iniciado por jacj0102, 14 Mayo 2012, 07:13 AM

0 Miembros y 1 Visitante están viendo este tema.

jacj0102

Ante todo que tenga un buen día, quisiera preguntarles si es posible cambiar la forma de muestra en un Label por ejemplo:

normalmente en un label se muestra así: "Hola Mundo"

pero yo quiero que me muestre así:
H
o
l
a

M
u
n
d
o

De arriba hacia abajo no se si sera posible, espero me puedan ayudar gracias de antemano.
"La Raiz del Estudio es Amargo, Pero el Fruto es Dulce"
"Corrige al sabio y se hara mas sabio, corrige al necio y te lo echara de enemigo"

seba123neo

podes hacerlo con saltos de lineas entre cada letra, pero queda horrible el codigo, es mejor crearte un control que maneje por si solo el texto, aca tenes una clase sacada de internet, la cual dibuja el texto:

Código (vbnet) [Seleccionar]
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows.Forms
Imports System.Drawing

Public Class VerticalLabel
    Inherits Label

    Public Sub New()
        SetStyle(ControlStyles.UserPaint, True)
        SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        SetStyle(ControlStyles.DoubleBuffer, True)

        Me.AutoSize = False
    End Sub

    Private Sub CalculateSize(ByVal value As String)
        Me.AutoSize = False

        Dim height As Integer = 0
        Dim width As Integer = 0
        Dim sizeTemp As New Size()

        For Each c As Char In value
            sizeTemp = TextRenderer.MeasureText(c.ToString(), Me.Font)
            height += sizeTemp.Height

            If sizeTemp.Width > width Then
                width = sizeTemp.Width
            End If
        Next

        Me.Height = height
        Me.Width = width
    End Sub

    Public Overrides Property Text() As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            MyBase.Text = value
            CalculateSize(value)
        End Set
    End Property

    Public Overrides Property Font() As Font
        Get
            Return MyBase.Font
        End Get
        Set(ByVal value As Font)
            MyBase.Font = value
            CalculateSize(MyBase.Text)
        End Set
    End Property

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Dim br As New SolidBrush(Me.ForeColor)
        Dim smt As New StringFormat()

        smt.Alignment = StringAlignment.Center

        Dim sizeTemp As New Size()
        Dim i As Integer = 0
        For Each c As Char In Text
            sizeTemp = TextRenderer.MeasureText(c.ToString(), Me.Font)
            Dim rc As New Rectangle(0, sizeTemp.Height * i, sizeTemp.Width, sizeTemp.Height)
            e.Graphics.DrawString(c.ToString(), Font, br, rc, smt)
            i += 1
        Next

        br.Dispose()
    End Sub
End Class


eso lo pones en una clase y despues te va a aparecer el control en la barra de herramientas como si fuera un control, lo unico que tenes que hacer es arrastrarlo al formulario, y cambiarle el texto que quieras y se va a mostrar vertical.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson