Projecto de meteorologia---C#---
|
12-02-2011, 13:28
Mensagem: #15
|
|||
|
|||
RE: Projecto de meteorologia---C#---
Ora bem,
Para não haver mais problemas vou passar a explicar o que se encontra nesse projecto. Pelos vistos estou a lidar com alguém que se encontra no inicio dos inicios da programação em C# e por consequente este encontra-se a trabalhar/aprender com alguém, que ainda por cima é professora, que pelos vistos não entende nada do assunto ao afirmar que não encontra o código, enfim... O projecto que eu te enviei é todo ele feito em Visual Studio 2010, para o caso de precisares de abrir o projecto e compilares para tu e a tua "sotra" conseguirem visualizar o assunto. Existe dois ficheiros chamados de "NewsTicker.cs" e "NewsTicker.Designer.cs" que no seu conjunto forma aquilo que nós, programadores de .NET, chamamos User Controls (mais informação aqui http://www.dotnet-guide.com/usercontrol11.html) e que neste caso eu usei para criar um objecto composto, neste caso uma evolução do objecto Painel (Panel). Código: using System; Este é o código do Ticker! Para não haver dúvidas vou passar a explicar o que significa cada uma das linhas. Código: using System; Este pequeno bloco de texto são directivas/referências/bibliotecas que te permitem o acesso a componentes "pré-fabricados". Código: namespace PPLWareTicker Este bloco mostra a criação simples de um Alias que mais tarde algures no projecto vai ser invocado como uma directiva/referência/biblioteca. Código: public partial class NewsTicker : Panel Neste bloco é onde eu digo que vou criar um novo objecto chamado de "NewsTicker" que é derivado do objecto "Panel", isto é, vai conter todas as propriedades do "Panel" e mais algumas ou simplesmente as do "Panel" mas melhoradas. Código: private Timer mScroller; // Scroll timer Neste ponto eu estou a instanciar as variáveis globais que vou necessitar para colocar o Ticker a funcionar. O mScroller é um variável do tipo Timer (Tempo) que vai estipular a velocidade do Scroller (Texto que vai correr). O mOffset é uma variável do tipo inteiro, que é onde coloco o tamanho, em largura, do objecto NewsTicker para saber qual o tamanho do Scroller para saber quando é que este tem de começar e quando é que vai acabar para voltar a começar. O mText é uma variável do tipo string, que é onde eu indico qual o texto a apresentar. O mPixels é o variável do tipo Size, que é onde eu declaro o tamanho em pixeis que o texto vai ocupar no ecrã, podendo sair fora do objecto NewsTicker. O mBuffer é uma variável do tipo Bitmap, onde eu vou criar a imagem que vai ser apresentada/"pintada" no ecrã com o respectivo texto na respectiva posição que é para apresentar. Código: public NewsTicker() Aqui instancio o objecto "NewsTicker". Basicamente é onde tudo começa. Todos os objectos têm uma função deste género, pois é o que declara propriamente o tipo que a "Form" vai "levar". Como podes verificar eu inicio a variável mScroller estipulando um intervalo de tempo de 1 milisegundo, que no inicio se encontra desligado e que tem como por evento, quando activo, o evento DoScroll. Código: [Browsable(true)] Aqui eu faço uma sobreposição ao método Text do objecto "Panel", isto é, faço uma "melhoria" ao método Text que já existia no "Panel" e que o meu novo objecto adoptou. Neste caso a alteração remete-se a quando eu recebo informação ("set") em que a minha variável mText recebe o respectivo valor que eu quero apresentar no Scroller. Se inserirmos efectivamente algum texto, nem que seja um espaço, ele vai activar o nosso Timer, depois vai passar para a variável mPixel, quantidade de pixeis que o nosso texto, num determinado tipo de Font, contem e depois o mOffset vai obter o tamanho em largura do objecto. Código: private void DoScroll(object sender, EventArgs e) Aqui é o evento do Timer em que eu desincremento o mOffset de forma a provocar a "ilusão" de movimento. Quando o mOffset passar a ser menor que o valor negativo da quantidade de pixeis este volta a ter o valor do tamanho em largura criando a "ilusão" de ter voltado ao ponto inicial. Código: protected override void OnPaintBackground(PaintEventArgs e) Isto tal como o comentário indica, não faz nada. Está aqui só por estar porque é inerente ao objecto "Panel" de acordo com as regras de programação orientada a objectos. Código: protected override void OnPaint(PaintEventArgs e) Aqui é onde tudo acontece. Ele verifica se o buffer se encontra vazio, se sim instancia, se não passa ao passo seguinte, pois o buffer já contem a instância de imagem. Depois cria os gráficos a partir desse buffer. A seguir criamos as brushs que vão pintar o fundo e o texto de determinada cor e depois criamos um rectângulo. A seguir adicionamos o texto com a respectiva font e cor e Offset e desenhamos o gráfico no ecrã. Depois destruimos as variáveis gráficos e bruchs. Isto é o básico dos básicos de um Scroller. Pode ser feito com Panel, Labels, TextBox mas eu optei por um Panel porque penso que seja o mais correcto. Depois na Form é só usares como usas qualquer outro objecto no Visual Studio. Depois de criares o teu User Control e realizares o primeiro Build (podes compilar, mas são duas coisas completamente diferente, pois o compilar implicar Build e Deploy e neste caso eu só indico que basta que faças o build) de forma a que o objecto por ti criado apareça na ToolBox, onde se encontra todos os objectos, como ComboBox, DataGrids, TextBox, etc., e possas arrastar para a tua Form e utilizar e parametrizar o mesmo. Espero que tenhas entendido. Se não entendeste aconselho-te vivamente a dedicares-te a outra coisa qualquer em vez da programação. Este exemplo que te apresentei encontras em qualquer parte da net. Simplesmente fiz transposição para um projecto básico para não andares a pesquisar no meio de código desnecessário. Cumps, Manuel Rocha Licenciado em Informática para a Saúde pela ESTG Leiria Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense Especialização em Design Gráfico |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 1 Visitante(s)