打造彩色个性标签云(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

Comments

共有10条记录,当前只显示了最近的10条记录,点击查看更多留言

5/26/2008 2:21:23 AM

Lay

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

Lay

5/26/2008 6:44:35 AM

benben

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

benben

5/26/2008 10:11:46 AM

lay

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

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

lay

5/26/2008 10:42:14 AM

benben

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

benben

5/26/2008 10:57:33 AM

lay

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

lay

5/26/2008 11:45:20 AM

lay

老师,我很菜啊,还有点搞不定.
<?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

5/26/2008 12:24:35 PM

benben

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

benben

5/26/2008 12:36:03 PM

benben

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

benben

5/26/2008 12:46:48 PM

lay

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

lay

5/26/2008 12:53:25 PM

benben

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

benben

共有10条记录,当前只显示了最近的10条记录,点击查看更多留言
(必填)
(必填,不会被公开)
谢谢留言,如果留言不成功请联系ben#119797.com

Powered by BlogEngine.NET 苏ICP备08023017号


Recent comments

Author