21/05/2009

Gifs Animadas

Para quem não quiser comprar um Plugin para colocar uma animação no seu programa, vou mostrar como exibir uma Gif animada.

Sem muita dor de cabeça, você pode construir uma classe derivada da classe canvas e posteriormente apenas inseri-la aonde achar conveniente.

Vamos a ela em um passo a passo.

  • 1 Crie uma Classe nova.
  • 1.1 Dê um nome a ela (A minha se chamou CanvasGif)
  • 1.2 Atribua “Canvas” como sua super Classe. Assim tudo que um Canvas possui, ela também possuirá.
  • 1.3 Adicione a interface “actionNotificationReceiver”, será criado no momento da adição, o método PerformAction. Isso permite q notificações de eventos estejam disponíveis na sua classe (eventos dentro de classes são muito úteis, e essa é a uma boa forma de executá-los).
    2 Abra sua nova classe.
  • 2.1 Crie estas propriedades:

    Pic() As Picture // Esta conterá os quadros da sua Guif
    Index As Integer // Esta, a posição dos quadros exibidos
    Relogio As Timer // Esta é derivada da classe time, e será seu temporizador de exibição.

  • 2.2 No Evento open da sua classe, insira:

    Relogio = New Timer //Nova instância do relógio
    Relogio.Mode = 0 //coloca-o no modo de espera
    Relogio.Period = 75 //ajusta os intervalos para 0.75ms

  • 2.3 Agora crie o seguinte método:

    Sub Add(Arquivo As String)

    Dim f As FolderItem //para manipular arquivos
    Dim m As EditableMovie //para ler arquivos de vídeo

    //Recebe Arquivo animado
    f = GetFolderItem(Arquivo)
    //Encerra se o arquivo não existe
    if
    f = nil Then Return

    //Abre o arquivo de vídeo no modo de edição

    m = f.OpenEditableMovie

    Redim Pic(-1) //Zera a lista de imagem

    Do until m.EOF 'loop até o fim do arquivo
    //adiciona o quadro atual a lista de imagens
    Pic.Append m.Picture

    //aqui passa para o próximo quadro,
    //que está dividido em milissegundos,
    //voce pde variar para ver os resultados
    m.Position = m.Position + 0.1
    loop

    //adiciona a notificação de eventos ao relógio
    //isso fará com que o relógio dispare o método
    //PerformAction a cada pulso

    Relogio.addActionNotificationReceiver me
    Relogio.Mode = 2 'inicia o Relógio

    End sub

  • 2.4 Agora, no metodo PerformAction, insira:

    //Desenha a imagem na posição 0, 0
    me.Graphics.DrawPicture Pic(index),0,0
    //volta Index para o inicio quando chegar ao fim
    if index = Pic.Ubound then index = -1
    index = index + 1 //próximo quadro
  • 3 Terminamos. Agora é só inserir a sua nova CanvasGif em um Windows e atribuir um caminho de imagem ao método Add

    CanvasGif1.Add “d:\felix.gif”

Passos ilustrados:

é isso ai.

15/05/2009

Tray icon

Colocar um icone na barra do Windos ao lado do relogio



Vou dar logo a má noticia antes que você tente executar este código.
Isto só vai funcionar no Windows!


Dim tr As New TrayItem
Dim p AS Picture

'Nova imagem 32 x 32
p = NewPicture(32,32,32)

'Desenha um icone critico
'Mas poderia ter cido qualquer imagem

p.Graphics.DrawCautionIcon(0,0)
tr.Icon = p

'texto q aparece ao passar o mouse
tr.HelpTag = "Isso e um icone!"
APP.AddTrayItem tr



Pronto, ele ja está lá!



E se você olhar um pouco mais a fundo pode descobrir inúmeras aplicações para estas linhas. O DoubleClick, LeftMouseButton, RightMouseButton, juntamente com o System.MouseX ou .MouseY, pode ampliar bem o leque de utilização, permitindo posicionar menús popups ou algo do gênero.





O Código de Barras 39

Para quem necessita imprimir códigos de barra e não tem necessidade que o código seja muito complexo ou extenso, o código de barras padrão 39 (ou 3 de 9) pode ser a solução.

Este padrão possui algumas limitações, como por exemplo: imprime apenas 43 tipos de caracteres (0 a 9, de A a Z e alguns poucos símbolos), e seu comprimento aumenta muito rápido, deixando algumas leitoras impossibilitadas de ler.

Mas como vantagens, é um código simples (dá para escrever até a lápis :D ), tem, opcionalmente, código verificador e (creio eu) todas as leitoras ópticas o entende. Para saber mais sobre códigos de barra você pode ler este artigo na Wikipedia ou no Blog do DQSoft

Com base em pesquisa nestes 2 links montei a Class Code39. Esta classe destina-se a desenhar codigos de barras no padrão 3 de 9, retornando uma imagem que pode ser impressa.
O Método CodeBar:

imagem = CodeBar(valor,Checksum,Pontas) Onde:
- imagem é a Picture para retorno
- Valor é a Stringe contendo os carateres que serão convertidos em barras
- Checksum é o Booleano que liga/desliga o calculo de verificação. Padrão = False
- Pontas é a String de terminação (inicio/fim). Padrão = "*"
Propriedades da Classe
Publica
- Height- - Integer - Altura da imagem de retorno
- Width - - Integer - largura maxima da imagem de retorno
- li- - - - Integer - Largura de 1 modulo das linhas de barra
- - - - - - Caso não seja alterado, será calculado com relação a largura maxima.
Privadas
- C39 - - - Integer - Array com a tabela de codigos Binario referente as barras
- Ch39- - - Integer - Array com a tabela de Caracter para referenciar C39

screenshot da tela de teste