C#版 Tag云图控件

部署运行你感兴趣的模型镜像
今天看到TerryLee的一篇文章 http://www.cnblogs.com/Terrylee/archive/2008/02/20/1075764.html,其中有一条 ASP.NET Tag/Search Cloud Server Control(导读:在Web2.0时代,Tag成为了一个标志,通常一些网站都会采用Tag云图来显示。有“好事者”干脆开发了一个Tag云的ASP.NET服务器控件),里边的源文件是用vb写的,我就把代码改改,转换成C#的了,代码我直接贴出来吧,大家自己看吧!

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Collections;
using System.Text.RegularExpressions;

namespace Conovosoft.Web.UI.WebControls
{
[ToolboxData(
"<{0}:SearchCloudrunat=server></{0}:SearchCloud>")]
publicclassSearchCloud:WebControl
{
"属性"#region"属性"

"Appearance"#region"Appearance"

[Bindable(
true),Category("Appearance"),Localizable(true)]
publicintMinFontSize
{
get
{
strings=(string)ViewState["MinFontSize"];
if(String.IsNullOrEmpty(s))
return10;
else
{
intresult=10;
int.TryParse(s,outresult);
returnresult;
}

}

set
{
ViewState[
"MinFontSize"]=value;
}

}


[Bindable(
true),Category("Appearance"),Localizable(true)]
publicintMaxFontSize
{
get
{
strings=(string)ViewState["MaxFontSize"];
if(String.IsNullOrEmpty(s))
return22;
else
{
intresult=22;
int.TryParse(s,outresult);
returnresult;
}

}

set
{
ViewState[
"MaxFontSize"]=value;
}

}


[Bindable(
true),Category("Appearance"),Localizable(true)]
publicstringFontUint
{
get
{
strings=(string)ViewState["FontUint"];
if(String.IsNullOrEmpty(s))
return"pt";
else
returns;
}

set
{
switch(value)
{
case"pt":
case"em":
case"%":
case"px":
ViewState[
"FontUnit"]=value;break;
default:
ViewState[
"FontUnit"]="px";break;
}

}

}


[Bindable(
true),Category("Appearance"),Localizable(true)]
publicstringMaxColor
{
get
{
strings=(string)ViewState["MaxColor"];

if(String.IsNullOrEmpty(s))
return"#00f";
else
returns;
}

set
{
ViewState[
"MaxColor"]=value;
}

}


[Bindable(
true),Category("Appearance"),Localizable(true)]
publicstringMinColor
{
get
{
strings=(string)ViewState["MinColor"];

if(String.IsNullOrEmpty(s))
return"#000";
else
returns;
}

set
{
ViewState[
"MinColor"]=value;
}

}


#endregion


"Data"#region"Data"

[Bindable(
true),Category("Data"),DefaultValue("")]
publicDataSetDataSource
{
get
{
return(DataSet)ViewState["DataSource"];
}

set
{
ViewState[
"DataSource"]=value;
}

}


[Bindable(
true),Category("Data"),DefaultValue(""),Localizable(true)]
publicstringDataIDField
{
get
{
return(string)ViewState["DataIDField"];
}

set
{
ViewState[
"DataIDField"]=value;
}

}


[Bindable(
true),Category("Data"),DefaultValue(""),Localizable(true)]
publicstringDataKeywordField
{
get
{
return(string)ViewState["DataKeywordField"];
}

set
{
ViewState[
"DataKeywordField"]=value;
}

}


[Bindable(
true),Category("Data"),DefaultValue(""),Localizable(true)]
publicstringDataURLField
{
get
{
return(string)ViewState["DataURLField"];
}

set
{
ViewState[
"DataURLField"]=value;
}

}


[Bindable(
true),Category("Data"),DefaultValue(""),Localizable(true)]
publicstringDataCountField
{
get
{
return(string)ViewState["DataCountField"];
}

set
{
ViewState[
"DataCountField"]=value;
}

}


[Bindable(
true),Category("Data"),Localizable(true)]
publicstringKeywordTitleFormat
{
get
{
strings=(string)ViewState["KeywordTitleFormat"];
if(String.IsNullOrEmpty(s))
{
return"%koccured%ctimes";
}

else
{
return(string)ViewState["KeywordTitleFormat"];
}

}

set
{
ViewState[
"KeywordTitleFormat"]=value;
}

}


[Bindable(
true),Category("Data"),Localizable(true)]
publicstringKeywordURLFormat
{
get
{
return(string)ViewState["KeywordURLFormat"];
}

set
{
ViewState[
"KeywordURLFormat"]=value;
}

}


[Bindable(
true),Category("Data"),DefaultValue(""),Localizable(true)]
publicstringSortBy
{
get
{
return(string)ViewState["SortBy"];
}

set
{
ViewState[
"SortBy"]=value;
}

}


#endregion


[Bindable(
false),Category("Debug"),DefaultValue(false),Localizable(true)]
publicBooleanDebug
{
get
{
if(ViewState["Debug"]!=null)
{
return(Boolean)ViewState["Debug"];
}

else
{
returnfalse;
}


}

set
{
ViewState[
"Debug"]=value;
}

}


PrivateProperties#regionPrivateProperties

privateHashtablearrAttributes;

privatestringCloudHTML
{
get
{
strings=(string)ViewState["CloudHTML"];
if(String.IsNullOrEmpty(s))
{
returnstring.Empty;
}

returns;
}

set
{
ViewState[
"CloudHTML"]=value;
}

}


privateHashtableKeyAttributes
{
get
{
returnarrAttributes;
}

set
{
arrAttributes
=value;
}

}


#endregion


#endregion


protectedoverridevoidRender(HtmlTextWriterwriter)
{
if(!String.IsNullOrEmpty(CloudHTML))
{
writer.WriteBeginTag(
"div");

if(!String.IsNullOrEmpty(CssClass))
{
writer.WriteAttribute(
"class",CssClass);
}

writer.Write(HtmlTextWriter.TagRightChar);
writer.Write(CloudHTML);
writer.WriteEndTag(
"div");
}

else
{
writer.Write(
"这儿没有产生HTML,一个未操作错误发生.");
}

}


protectedoverridevoidOnLoad(EventArgse)
{
if(DataSource==null)
{
CloudHTML
="请指定DataSet";
return;
}

if(DataIDField==string.Empty)
{
CloudHTML
="请指定一个ID数据段";
return;
}

if(DataKeywordField==string.Empty)
{
CloudHTML
="请指定一个关键词数据段";
return;
}

if(DataCountField==string.Empty)
{
CloudHTML
="请指定一个关键词数量数据段";
return;
}

if(!Regex.IsMatch(MinColor,"^#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$"))
{
CloudHTML
="最小颜色必须为十六进制编码并且必须为如:#000or#ff99cc";
return;
}

if(!Regex.IsMatch(MaxColor,"^#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$"))
{
CloudHTML
="最小颜色必须为十六进制编码并且必须为如:#000or#ff99cc";
return;
}


try
{
StringBuildersb
=newStringBuilder();
DataViewdv
=newDataView(DataSource.Tables[0]);
//DataRowViewrow;

dv.Sort
=string.Format("{0}DESC",DataCountField);

intcount=dv.Count;

if(count==0)
{
CloudHTML
="没有任何值产生云";
return;
}


intMaxQty=int.Parse(dv[0].Row[DataCountField].ToString());
intMinQty=int.Parse(dv[dv.Count-1].Row[DataCountField].ToString());

intSpread=MaxQty-MinQty;

if(Spread==0)
Spread
=1;

intFontSpread=MaxFontSize-MinFontSize;
if(FontSpread==0)
FontSpread
=1;

doubleFontStep=(double)(FontSpread)/Spread;

if(!string.IsNullOrEmpty(SortBy))
{
dv.Sort
=SortBy;
}

else
{
dv.Sort
=string.Format("{0}ASC",DataKeywordField);
}


foreach(DataRowViewrowindv)
{
intsKeyID=int.Parse(row.Row[DataIDField].ToString());
stringsKeyWord=row.Row[DataKeywordField].ToString();
intsKeyCount=int.Parse(row.Row[DataCountField].ToString());
stringsKeyURL;
stringColorRGB;
doubleWeight=MinFontSize+((sKeyCount-MinQty)*FontStep);
intFontDiff=MaxFontSize-MinFontSize;
doubleColorWeight=Math.Round(99*(Weight-MinFontSize)/(FontDiff)+1);

if(MinColor==MaxColor)
{
ColorRGB
=MinColor;
}

else
{
ColorRGB
=Colorize(MinColor,MaxColor,ColorWeight);
}


if(String.IsNullOrEmpty(DataURLField))
{
if(!String.IsNullOrEmpty(KeywordURLFormat))
{
sKeyURL
=ReplaceKeyValues(KeywordURLFormat,sKeyID,sKeyWord,"",sKeyCount);
}

else
{
sKeyURL
="#";
}

}

else
{
sKeyURL
=row[DataURLField].ToString();
}

sb.Append(
string.Format("<ahref=/"{0}/"style=/"font-size:{1}{5};color:{4};/"title=/"{2}/"{6}>{3}</a>",
sKeyURL,
Math.Round(Weight),
ReplaceKeyValues(KeywordTitleFormat,sKeyID,sKeyWord,sKeyURL,sKeyCount),
HttpContext.Current.Server.HtmlEncode(sKeyWord),
ColorRGB,
FontUint,
GenerateAttributes(sKeyWord,sKeyID,sKeyURL,sKeyCount)));
}

CloudHTML
=sb.ToString();
}

catch(Exceptionex)
{
if(!Debug)
{
CloudHTML
="错误产生";
}

else
{
throwex;
}

}

finally
{
base.OnLoad(e);
}

}


publicvoidAddAttribute(stringvalue,stringtext)
{
if(KeyAttributes==null)
{
KeyAttributes
=newHashtable();
}

KeyAttributes.Add(value,text);
}


privatestringGenerateAttributes(stringk,intid,stringu,intc)
{
if(KeyAttributes==null)
{
returnstring.Empty;
}


StringBuilders
=newStringBuilder();
ICollectionkeys
=KeyAttributes.Keys;

foreach(objectkeyinkeys)
{
s.Append(
string.Format("{0}=/"{1}/"",key,ReplaceKeyValues(KeyAttributes[key].ToString(),id,k,u,c)));
}


returns.ToString();
}


privatestringReplaceKeyValues(stringtxt,intid,stringk,stringu,intc)
{
k
=k.Replace("'","&apos;");

txt
=txt.Replace("%i",id.ToString());
txt
=txt.Replace("%k",HttpContext.Current.Server.HtmlEncode(k));
txt
=txt.Replace("%u",u);
txt
=txt.Replace("%c",c.ToString());

returntxt;
}


privatestringColorize(stringminc,stringmaxc,doublew)
{
w
=w/100;
stringrs,gs,bs;
stringr,g,b;
intminr,ming,minb,maxr,maxg,maxb;

if(minc.Length==4)
{
rs
=minc.Substring(1,1);
gs
=minc.Substring(2,1);
bs
=minc.Substring(3,1);

minc
="#"+rs+rs+gs+gs+bs+bs;
}


if(maxc.Length==4)
{
rs
=maxc.Substring(1,1);
gs
=maxc.Substring(2,1);
bs
=maxc.Substring(3,1);

maxc
="#"+rs+rs+gs+gs+bs+bs;
}


minr
=Convert.ToInt32(minc.Substring(1,2),16);
ming
=Convert.ToInt32(minc.Substring(3,2),16);
minb
=Convert.ToInt32(minc.Substring(5,2),16);

maxr
=Convert.ToInt32(maxc.Substring(1,2),16);
maxg
=Convert.ToInt32(maxc.Substring(3,2),16);
maxb
=Convert.ToInt32(maxc.Substring(5,2),16);

r
=Convert.ToString(int.Parse(Math.Round(((maxr-minr)*w)+minr).ToString()),16);
g
=Convert.ToString(int.Parse(Math.Round(((maxg-ming)*w)+ming).ToString()),16);
b
=Convert.ToString(int.Parse(Math.Round(((maxb-minb)*w)+minb).ToString()),16);

if(r.Length==1)
r
="0"+r;
if(g.Length==1)
g
="0"+g;
if(b.Length==1)
b
="0"+b;

stringcolor;
color
="#"+r+g+b;

returncolor;
}

}

}

您可能感兴趣的与本文相关的镜像

HunyuanVideo-Foley

HunyuanVideo-Foley

语音合成

HunyuanVideo-Foley是由腾讯混元2025年8月28日宣布开源端到端视频音效生成模型,用户只需输入视频和文字,就能为视频匹配电影级音效

function cloud_generator() % 创建主窗口 fig = figure('Name', '一维正态云图生成器', ... 'NumberTitle', 'off', ...%%生成的标题不包含图窗编号 'Position', [100, 100, 800, 600], ...%设定图窗位置(默认以屏幕的左下角为原点)和大小 'MenuBar', 'none', ... 'ToolBar', 'none'); % 创建输入控件和标签 createUIControls(fig); % 创建绘图区域 axes('Parent', fig, 'Position', [0.4, 0.1, 0.55, 0.8]); end function createUIControls(fig) % 参数默认值 defaultEx = '0'; defaultEn = '0.1'; defaultHe = '0.01'; defaultN = '1000'; % 控件位置参数 left = 50; editWidth = 100; labelWidth = 100; height = 20; verticalSpacing = 30; top = 500; % 创建Ex输入 uicontrol('Style', 'text', ... 'Position', [left, top, labelWidth, height], ... 'String', '期望 Ex:'); exEdit = uicontrol('Style', 'edit', ... 'Position', [left+labelWidth, top, editWidth, height], ... 'String', defaultEx, ... 'Tag', 'exEdit'); % 创建En输入 uicontrol('Style', 'text', ... 'Position', [left, top-verticalSpacing, labelWidth, height], ... 'String', '熵 En:'); enEdit = uicontrol('Style', 'edit', ... 'Position', [left+labelWidth, top-verticalSpacing, editWidth, height], ... 'String', defaultEn, ... 'Tag', 'enEdit'); % 创建He输入 uicontrol('Style', 'text', ... 'Position', [left, top-2*verticalSpacing, labelWidth, height], ... 'String', '超熵 He:'); heEdit = uicontrol('Style', 'edit', ... 'Position', [left+labelWidth, top-2*verticalSpacing, editWidth, height], ... 'String', defaultHe, ... 'Tag', 'heEdit'); % 创建n输入 uicontrol('Style', 'text', ... 'Position', [left, top-3*verticalSpacing, labelWidth, height], ... 'String', '云滴数 n:'); n
最新发布
03-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值