TAG
云标签是现在比较流行的一种网页内容了,上网一搜基本上没字体大小的算法,有的都是在一定区间内随机产生的大小,而我们想要的应该是按某个数字的大小来排列的,没办法只好自己想种了..
基本思路是这样的:
拿每个标签的点击(或是其他数据,比如关联的内容数等)来做为排序的权,因为标签的点击中有一个最小值min和一个最大值max,这样,所有标签的点击数据可以用下图表示:
这样,假设我们设出8种不同字体表示云标签,一般情况下,,最大字体的要比较少,而小字体的站大部分,
所以,我们可以得出以下的算法:
1 double t1, t2, t3, t4, t5, t6, t7;
2 Min += 1;
3 t1 = Max * 0.30; //百分之30的是最小字体
4 if (t1 < Min) t1 = Min;
5 t2 = Max * 0.55;
6 t3 = Max * 0.65;
7 t4 = Max * 0.75;
8 t5 = Max * 0.85;
9 t6 = Max * 0.93;
10 t7 = Max * 0.99; //让最大字体的数据尽可能少
11 int Tcount = int.Parse(TCount);
12
13 if (Tcount <= t1)
14 return "t1";
15 if (Tcount > t1 && Tcount < t2)
16 return "t2";
17 if (Tcount > t2&& Tcount <= t3)
18 return "t3";
19 if (Tcount > t3 && Tcount <= t4)
20 return "t4";
21 if (Tcount > t4 && Tcount <= t5)
22 return "t5";
23 if (Tcount > t5 && Tcount <= t6)
24 return "t6";
25 if (Tcount > t6 && Tcount < t7)
26 return "t7";
27 if (Tcount >= t7)
28 return "t8";
29 else
30 return "t1";
算法中MIN,MAX是数据库中标签点击数的最大最小值,在理想情况下以上算法,可以很好的分布出云标签的大小字体,如果有些情况下大字体太多,,你可以加入限定条件超过几个就不能再增加大字体了,
t1~t8你可以设为你字体的样式
时间太紧了,就先写到这了,大体就这么回事,不明白的可以发到
zdwork@qq.com哈..对了贴个实例:www.9gaoxiao.com...上面就有了
更多DotNet好文章www.zdexe.com