读书人

【混乱走法】教你如何用Panel做数字仿

发布时间: 2012-09-03 09:48:39 作者: rapoo

【混乱走法】教你怎么用Panel做数字仿LED
资源地址……
http://download.csdn.net/detail/sunzongbao2007/4436742

上图


谁说一定要用GDI+了……纯控件也能整出类似效果。
好吧,能多难看就有多难看了。

每个段位都是用Panel做的, 横向 (10,2) 纵向(2,10) ,只是为了让他变成一根线。

1
2 3
4
5 6
7

这样子的格式。

每个显示的数字都是以UserControl的方式定义的。
然后使用

C# code
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;            }                    }

这样子的方式来控制段位的显示与否……。

于是一个混乱的段位显示器诞生了。

后面跟一段瞎眼代码,因为属于数据定义,所以略显繁琐

C# code
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;                }            }        }


[解决办法]
mark下,有时间我也试验下看看。
[解决办法]
好!

。。还有7段码的分布是这样的

a
+----+
f| g |b
+----+
e| |c
+----+ . dp(小数点)
d


一般用一个byte的掩码来表示每段的「亮」「灭」(小数点一般在bit7),根据共阴和共阳显示上有区别(取反可以互换)
比如数字2,如果1为「亮」,那么2的段就是「a b d e g」,掩码是「X1101101」(我从高位往下a→g)
然后你可以在显示里用一个flag 00000001 不断左移来点亮每段。。

以后需要改变字符直接就传入你设计的掩码就行了。。MVC分离。。。
[解决办法]
敢让它显示中文咩?
[解决办法]
看不懂,~~~~(>_<)~~~~
[解决办法]
探讨
引用:

引用:

引用:

敢让它显示中文咩?

那我起码要个16*16的点阵


复杂度几何比例上升 哈

------解决方案--------------------


丁页丁页!
[解决办法]
mark
[解决办法]
大婶和大婶。PK技术。。
[解决办法]
帮顶!
[解决办法]
建议使用七段 LED 数字电路译码器的方式去处理数据

七段 LED 0~9 数字真值表

C# code
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 |+---+---+---+---+---+  +---+---+---+---+---+---+---+ 

读书人网 >.NET

热点推荐