• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

DuroPt

[Resolvido] Rodapé Opaco

17 mensagens neste tópico

A minha mais recente duvida devese ao facto de um rodapé!

Como nas noticias em que vai passando texto que nunca mais acaba. Bom eu gostava de saber fazer, e com um condição especial:

As partes da ponta, o incio e o fim, onde aparece e acaba o texto, sere um bocado opacas, como transparenes mas nao muito. O texto a aparecer seria escolhido pelo utilizador numa textbox.  Um colega meu fez em assenbly pra me mostrar, mas eu nao pesco nada daquilo e disse.lhe que em vb tambem deveria de dar =) Bom obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi exactamente o que queres, não te consegues explicar melhor?

E opacas é o contrário de transparente, logo "serem um bocado opacas, como transparentes" é um pouco contraditório...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo, nas pontas do rodapé ser transparente não muito, como a desvanecer a mensagem =D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Supondo que seja de um tamanho fixo, porque não desenhas um PNG com essa transparência e já está? Podes fazê-lo com GDI/GDI+, mas dá muito mais trabalho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PNG? Como assim? Mas entendes o que estava a pensar? Ser transparente só nas pontas ! XD brigado desde já

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PNG é um formato de imagem que permite transparências e são suportadas pelo VB.NET.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha mais recente duvida devese ao facto de um rodapé!

Como nas noticias em que vai passando texto que nunca mais acaba. Bom eu gostava de saber fazer, e com um condição especial:

As partes da ponta, o incio e o fim, onde aparece e acaba o texto, sere um bocado opacas, como transparenes mas nao muito. O texto a aparecer seria escolhido pelo utilizador numa textbox.  Um colega meu fez em assenbly pra me mostrar, mas eu nao pesco nada daquilo e disse.lhe que em vb tambem deveria de dar =) Bom obrigado

Olá,

O teu amigo não é por acaso o Zuma ? Eu já lhe mostrei como se faz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

O teu amigo não é por acaso o Zuma ? Eu já lhe mostrei como se faz.

Sim é ele, mas ele não tem o vb.net instlado porque te pediu ele iss? =S Já agora explicavas aqui ao pessoal =P abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu até posso mostrar-te um exemplo, mas não está muito elaborado. Começei a preparar um artigo para o meu blog mas não cheguei a acabar, mas dá para teres uma ideia.

Não te deve adiantar muito mas ... fica aqui o exemplo. Depois diz se é +/- isto.

Cria um novo projecto e coloca lá este código. Depois pressiona qualquer tecla.

Imports System.Drawing
Imports System.Drawing.Imaging

Public Class Fade

    Private A As Integer
    Private myBitmap As Bitmap
    Private myBitmapBG As Bitmap
    Private WithEvents fadeTimer As New Timer
    Private lbl As Label

    Private Sub Fade_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        FlashFadeText("Portugal @ Programar")
    End Sub

    ' Form load
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lbl = New Label
        lbl.Text = Space(1)
        lbl.AutoSize = False
        lbl.SetBounds(10, 10, Me.Width, lbl.Height)
        Me.Controls.Add(lbl)

        fadeTimer.Interval = 40

        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.UpdateStyles()
    End Sub


    ' Mostra o texto na label
    Public Sub FlashFadeText(ByVal message As String)

        If Me.IsHandleCreated Then
            fadeTimer.Stop()

            myBitmapBG = New Bitmap(lbl.Width, lbl.Height)
            Dim g As Graphics = Graphics.FromImage(myBitmapBG)
            g.Clear(lbl.BackColor)
            g.Dispose()

            myBitmap = New Bitmap(myBitmapBG.Width, myBitmapBG.Height)
            g = Graphics.FromImage(myBitmap)
            g.Clear(Color.Transparent)


            ' Cria uma cor aleatória
            Dim rdColor As New Random
            Dim sb As New SolidBrush(Color.FromArgb(rdColor.Next(255), rdColor.Next(255), rdColor.Next(255)))

            ' Escreve o texto
            g.DrawString(message, New Font("Arial", 12, FontStyle.Bold), sb, 0, 0)
            sb.Dispose()
            g.Dispose()

            A = 255
            fadeTimer.Start()
        End If

    End Sub


    ' Animação (fade out)
    Private Sub fadeTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles fadeTimer.Tick
        Dim cm As ColorMatrix = New ColorMatrix(New Single()() _
               {New Single() {1, 0, 0, 0, 0}, _
                New Single() {0, 1, 0, 0, 0}, _
                New Single() {0, 0, 1, 0, 0}, _
                New Single() {0, 0, 0, (A / 255), 0}, _
                New Single() {0, 0, 0, 0, 1}})

        Dim IA As New ImageAttributes
        IA.SetColorMatrix(cm, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)

        Dim tmpBitmap As New Bitmap(myBitmapBG)
        Dim G As Graphics = Graphics.FromImage(tmpBitmap)
        G.DrawImage(myBitmap, lbl.ClientRectangle, 0, 0, lbl.Width, lbl.Height, GraphicsUnit.Pixel, IA)
        G.Dispose()
        IA.Dispose()

        lbl.BackgroundImage = tmpBitmap
        lbl.Top += 1

        A = A - 5
        If A < 0 Then
            lbl.Top = 10
            fadeTimer.Stop()
        End If
    End Sub


End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@jpaulino: Adorei :) De certeza (absoluta) que é possível fazer por exemplo, o efeito dos noticiários (como é referido no tópico), certo? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, consegue-se ... como umas pequenas melhorias. Era isso que eu ia colocar no meu blog, mas já lá vai a surpresa  :)

Eu também acho que é muito giro! Ainda bem que gostaste  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, consegue-se ... como umas pequenas melhorias. Era isso que eu ia colocar no meu blog, mas já lá vai a surpresa  :)

Eu também acho que é muito giro! Ainda bem que gostaste  :)

Adorei eheh ^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa so agradecer agora e mostrar  meu agrado pelo teu trabalho, estava distraido com e estava-me a esquecer de vir cá. Meu é isso mesmo que eu queria  :) Tu sabes-a toda jpaulino ;D

Brigadao xD

É curioso é que o codigo é mesmo grande fogo xD ;D vá abraços e adorei, e adorei mesmo o teu trabalho. Desculpa lá ter-te feito estragar a surpresa xD

Abraços malta ;D

Muito fixe mais uma vez o trabalho ;D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Opah é que está mesmo fix meu ;D  parabens outra vez, e obrigado. ;D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Opah é que tá mesm fix meu ;D  parabens outra vez me, e obrigado. ;D

Obrigado  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem mas será que poderiam adaptar isto a passar da direita para a esquerda, e com "as mesmas funções" de um rodapé?

Para o texto quando desaparecesse, continuasse a mensagem, e quando esta acabasse, repetisse novamente, dando a ideia de um rodapé contínuo.

Estou a pedir isto, talvez seja pedir muito, mas tenho tado a tentar mexer no código e hoje estou um pouco emperrado e isto tá mau de sair alguma coisa :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ninguém? Queria ver se pegava nisto de novo visto a um projecto de Corporate TV que me propuseram agora ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora