Buscar

Últimas inserções

Gerando planilhas XLS para Excel com formatação de colunas
MD5 direto no Sql Server
Aplicação demora muito para inicializar quando VisualStudio está "Loading Symbols"
Fazendo Painel de Leds em menos usando System.Drawing(parte 3)
Fazendo Painel de Leds em menos usando System.Drawing(parte 2)
- TODAS AS DICAS

Top Poggers (sempre)

Jar Jar Binks (136)
Cuban Pete (127)
Tufo (28)

Top Poggers (30 dias)


Área restrita

Logon

pogMasters.NET

Início
Busca Avançada
Contato

RSS
 

Fazendo Painel de Leds em menos usando System.Drawing(parte 2)

C#

21/06/2011 por Jar Jar Binks


PRÓXIMO : http://pogmasters.net/pogs/fazendo-painel-de-leds-em-menos-usando-systemdrawingparte-3.aspx

Se você viu a parte 1 deste artigo (Aqui: http://pogmasters.net/pogs/fazendo-painel-de-leds-em-menos-usando-systemdrawingparte-1.aspx)

Você pode fazer esta parte 2. Esta parte consiste em criar uma classe que se chama Panel, que representa a matriz de leds que teremos.

Esta classe tem alguns pontos importantes: ChangeState(), que recebe a localização do Led na Matriz, e o ChangeStateByPosition, que recebe uma coordenada cartesiana para atualizar o Led na Matriz.

Outra coisa importante é o método DrawPanel, que fará o desenho do painel com a matriz de leds acesos ou apagados.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace LedPanel
{
public class Panel
{
public List<List<Led>> panel = new List<List<Led>>();
private const int size = 16;
private Graphics g;
private Bitmap b;

private Led lastChangedLed;

public Led LastChangedLed
{
get
{
return lastChangedLed;
}
}

public Panel(int hor, int vert)
{
for (int i = 0; i < hor; i++)
{
List<Led> vertPanel = new List<Led>();
for (int j = 0; j < vert; j++)
{
Led led = new Led();
vertPanel.Add(led);

}
panel.Add(vertPanel);
}
b = new Bitmap((hor * size ) +10 , (vert * size) + 10);
g = Graphics.FromImage(b);
}

public void ChangeState(int hLed, int vLed)
{
if((hLed >= 0 && hLed <= panel.Count -1) && (vLed >= 0 && vLed <= panel[hLed].Count -1))
{
Led led = panel[hLed][vLed];
led.ChangeState();
lastChangedLed = led;
}
}
public void ChangeStateByPosition(int x, int y)
{
int hLed = x / size;

int vLed = y / size;

ChangeState(hLed, vLed);
}


public Led getLedByPosition(int x, int y)
{
int hLed = x / size;

int vLed = y / size;

return getLed(hLed, vLed);
}


public Led getLed(int hLed, int vLed)
{
if ((hLed >= 0 && hLed <= panel.Count - 1) && (vLed >= 0 && vLed <= panel[hLed].Count - 1))
{
return panel[hLed][vLed];
}
return null;
}

public void ScrollPanelLeft()
{
List<Led> vert = panel[0];
panel.Remove(vert);
panel.Add(vert);
}


public Image DrawPanel()
{
g.Clear(Color.Black);

for (int i = 0; i < panel.Count ; i++)
{
List<Led> vertPanel = panel[i];
for (int j = 0; j < vertPanel.Count; j++)
{
Led led = vertPanel[j];
if (led.On)
{
g.DrawEllipse(new Pen(Color.Black), i * size, j * size, size, size);
g.FillEllipse(new SolidBrush(Color.Red), i * size, j * size, size, size);
}
else
{
g.DrawEllipse(new Pen(Color.Black), i * size, j * size, size, size);
g.FillEllipse(new SolidBrush(Color.Maroon), i * size, j * size, size, size);
}

}
}

return b;

}



}
}

PRÓXIMO : http://pogmasters.net/pogs/fazendo-painel-de-leds-em-menos-usando-systemdrawingparte-3.aspx
 
   


Comentários sobre o artigo

27/06/2011 por mariajulia domingues de araujo

> cassiana um beijo daju/

Poste um comentário >>
Nome  
Email
Comentário    
Postar Comentário