打造彩色个性标签云(tags)

by benben 5/12/2008 8:31:15 AM

BlogEngine.NET默认的Tags显示太单调了,俺们的世界是五彩缤纷的。我们要修改App_Code/Controls/TagCloud.cs文件,让他每次生成的tags都是随机彩色的。在开始之前,建议大家看下C#随机颜色及随机数的问题

先添加一个方法RandomColor(),用来随机颜色,代码如下。

   
 private static string RandomColor(string key, Random randomName) 
    {
        string keyColor = Convert.ToString(randomName.Next(0, 16777215), 16);
        return "\" style=\"color:#" + keyColor; 
    }
然后在RenderControl()里加入我们的方法,修改后的为
    public override void RenderControl(HtmlTextWriter writer)
    {
			if (WeightedList.Keys.Count == 0)
			{
				writer.Write("

" + Resources.labels.none + "

"); } Random randomColoroo = new Random(); writer.Write("
    "); foreach (string key in WeightedList.Keys) { writer.Write("
  • "); writer.Write(string.Format(LINK, Utils.RelativeWebRoot + "?tag=/" + HttpUtility.UrlEncode(key), WeightedList[key] + RandomColor(key, randomColoroo), "Tag: " + key, key)); writer.Write(""); } writer.Write("
"); writer.Write(Environment.NewLine); }
演示站点可以参考俺的tags当然你可以下载我已经修改好的,覆盖到对应目录即可。雷击下载tags.zip
test

Tags: , , , ,

.net

Comments

5/26/2008 2:21:23 AM

老师,您能把上面的代码直接写成一个函数吗?
我的意思是,如randomHighLight(目标字符串)我搞了半天也没有搞好...

Lay cn

5/26/2008 6:44:35 AM

Ok,我晚上之前会把代码发给你!

benben cn

5/26/2008 10:11:46 AM

老师,您可以在这里贴出来,或者发送至 colorshower@163.com

非常感谢您的帮助.我搞啦很久啦.都没有成功....

lay cn

5/26/2008 10:42:14 AM

已经发给你了,你也可以访问
http://c.119797.com/randomColor.zip
下载

benben cn

5/26/2008 10:57:33 AM

非常感谢您,我这就尝试一下,我在XSLT中使用的.谢谢您!

lay cn

5/26/2008 11:45:20 AM

老师,我很菜啊,还有点搞不定.
<?xml version="1.0" encoding="utf-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:RandomColor="urn:the-xml-files:xslt-RandomColor" exclude-result-prefixes="pe ms RandomColor" >
<ms:script language="c#" implements-prefix="RandomColor">
public static string RandomColor(string key,Random randomName)
{
string keyColor =&quot;#&quot;+ Convert.ToString(randomName.Next(0, 16777215), 16);
int keySize = randomName.Next(1, 22);
return &quot;&lt;font size=&quot; + keySize + &quot; color=\&quot;&quot; + keyColor + &quot;\&quot;&gt;&quot; + key + &quot;&lt;/font&gt;&quot;;
}
</ms:script>
<xsl:output method="html" />
<xsl:template match="/">
<xsl:for-each select="/NewDataSet/Table">
<xsl:value-of select="RandomColor:RandomColor(KeywordText,这个参数怎么写?)"/>
</xsl:for-each>
</xsl:template>
</xsl:transform>

lay cn

5/26/2008 12:24:35 PM

randomName 为传入的random种子!你需要在页面初始化是创建一个种子。
Random fontRandom = new Random();

benben cn

5/26/2008 12:36:03 PM

http://blog.119797.com/post/C-random-color.aspx
你可以看下这篇文章。

benben cn

5/26/2008 12:46:48 PM

我在琢磨琢磨看.我是希望有一个函数在 XSLT中 RandomColor:RandomColor(目标字符)就可以达到上面的效果,我这方面超级菜.我在琢磨琢磨.

lay cn

5/26/2008 12:53:25 PM

呵呵,可以实现。直接每次调用函数都生成一个random种子就可以了。
在函数前面加上
Random fontRandom = new Random();
就可以了。不过这样,随机出来的数基本上一样的!

benben cn

Add comment

 

   

 

  Country flag

buquote
Loading

Powered by BlogEngine.NET 苏ICP备08023017号



Recent comments

Author

声明

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008

Sign in