【混乱走法】教你怎么用Panel做数字仿LED
资源地址……
http://download.csdn.net/detail/sunzongbao2007/4436742
上图
谁说一定要用GDI+了……纯控件也能整出类似效果。
好吧,能多难看就有多难看了。
每个段位都是用Panel做的, 横向 (10,2) 纵向(2,10) ,只是为了让他变成一根线。
1
2 3
4
5 6
7
这样子的格式。
每个显示的数字都是以UserControl的方式定义的。
然后使用
private void Turn(int[] allPorts, int[] turnOffPorts, TurnTo turnTo) { bool to = turnTo == TurnTo.On ? true : false; foreach (int i in turnOffPorts) { this.Panels[i].Visible = to; } IEnumerable<int> turnOnPorts = allPorts.Except(turnOffPorts); foreach(int i in turnOnPorts) { this.Panels[i].Visible = !to; } }
public class NumberFactory { private static Dictionary<int, NumberRule> portsRule; public static Dictionary<int, NumberRule> PortsRule { get { if (portsRule == null) { portsRule = new Dictionary<int, NumberRule>(); portsRule.Add(0, new NumberRule { Ports = new int[]{ 4 }, TrunTo = TurnTo.Off, Source = 0 }); portsRule.Add(1, new NumberRule { Ports = new int[] { 3,6 }, TrunTo = TurnTo.On, Source = 1 }); portsRule.Add(2, new NumberRule { Ports = new int[] { 2,6 }, TrunTo = TurnTo.Off, Source = 2 }); portsRule.Add(3, new NumberRule { Ports = new int[] { 2,5 }, TrunTo = TurnTo.Off, Source = 3 }); portsRule.Add(4, new NumberRule { Ports = new int[] { 1,5,7 }, TrunTo = TurnTo.Off, Source = 4 }); portsRule.Add(5, new NumberRule { Ports = new int[] { 3,5 }, TrunTo = TurnTo.Off, Source = 5 }); portsRule.Add(6, new NumberRule { Ports = new int[] { 3 }, TrunTo = TurnTo.Off, Source = 6 }); portsRule.Add(7, new NumberRule { Ports = new int[] { 1,3,6 }, TrunTo = TurnTo.On, Source = 7 }); portsRule.Add(8, new NumberRule { Ports = new int[] { }, TrunTo = TurnTo.Off, Source = 8 }); portsRule.Add(9, new NumberRule { Ports = new int[] { 5 }, TrunTo = TurnTo.Off, Source = 9 }); } return portsRule; } } }
A, B, C, D 表示数字的各二进制位a, b, c, d, e, f, g 表示 LED 的各段,为 1 时该段显示,为 0 时该段不显示 a ####### # # b f # g # ####### # # c e # # ####### d+---+---+---+---+---+ +---+---+---+---+---+---+---+| | A | B | C | D | | a | b | c | d | e | f | g |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 0 | 0 | 0 | 0 | 0 | | 1 | 1 | 1 | 1 | 1 | 1 | 0 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 1 | 0 | 0 | 0 | 1 | | 0 | 1 | 1 | 0 | 0 | 0 | 0 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 2 | 0 | 0 | 1 | 0 | | 1 | 1 | 0 | 1 | 1 | 0 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 2 | 0 | 0 | 1 | 1 | | 1 | 1 | 1 | 1 | 0 | 0 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 4 | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 0 | 0 | 1 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 5 | 0 | 1 | 0 | 1 | | 1 | 0 | 1 | 1 | 0 | 1 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 6 | 0 | 1 | 1 | 0 | | 1 | 0 | 1 | 1 | 1 | 1 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 7 | 0 | 1 | 1 | 1 | | 1 | 1 | 1 | 0 | 0 | 0 | 0 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 8 | 1 | 0 | 0 | 0 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+| 9 | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 1 | 0 | 1 | 1 |+---+---+---+---+---+ +---+---+---+---+---+---+---+