网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET图形开发带超链接的饼图

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
nbsp;   这个函数里面首先根据对象大小生成一个位图对象,然后在这个位图对象上创建一个图形绘制对象,填充白色背景,并进行一下坐标转换,然后调用Draw函数绘制对象图形。然后函数就返回创建的位图对象了。

    这个对象还定义了一个GetHtmlString的函数向主页面提供一个显示饼图的HTML代码。

/// <summary>
/// 创建用于显示饼图图片和超链接的HTML代码字符串
/// </summary>
/// <param name="imgsrc">图片地址</param>
/// <returns>创建的HTML字符串</returns>
/// <remarks>
/// 此处没有简单拼凑HTML字符串,而是利用XML和HTML的相似性
/// 使用一个XmlTextWriter来生成HTML字符串。
/// </remarks>
public string GetHtmlString( string imgsrc )
{
    if( this.Count == 0 )
        return "";
    // 生成唯一的 map 元素名称
    string name = System.Guid.NewGuid().ToString("N");
    // 生成 XmlTextWriter 对象
    System.IO.StringWriter myStr = new System.IO.StringWriter();
    System.Xml.XmlTextWriter writer = new XmlTextWriter( myStr );
    writer.IndentChar = '' '' ;
    writer.Indentation = 3 ;
    writer.Formatting = System.Xml.Formatting.Indented ;
    // 开始输出HTML
    writer.WriteStartDocument();
    // 输出图片元素
    writer.WriteRaw("<img src=''" + imgsrc + "'' usemap=''#" + name + "'' border=''0''/>");
    // 输出 map 元素
    writer.WriteStartElement("map");
    writer.WriteAttributeString("name" , name );
    foreach( PieShapeItem item in this )
    {
        // 输出超链接区域
        Point ps = this.GetPoints( item );
        writer.WriteStartElement("area");
        writer.WriteAttributeString("shape" , "poly");
        writer.WriteStartAttribute("coords" , null );
        for( int iCount = 0 ; iCount < ps.Length ; iCount ++ )
        {
            writer.WriteString( ps[ iCount ].X.ToString() );
            writer.WriteString("," );
            writer.WriteString( ps[ iCount ].Y.ToString() );
            writer.WriteString("," );
        }
        writer.WriteEndAttribute();
        if( item.Link != null && item.Link.Length > 0 )
        {
            writer.WriteAttributeString("href" , item.Link );
        }
        writer.WriteAttributeString("title" , item.Text );
        writer.WriteEndElement();
    }
    writer.WriteEndElement();
    writer.WriteEndDocument();
    writer.Close();
    string html = myStr.ToString();
    // 修正输出的HTML字符串
    int index = html.LastIndexOf("?>");
    if( index > 0 )
    {
        html = html.Substring( index + 2 );
    }
    return html ;
}
/// <summary>
/// 获得包围饼图区域的点坐标数组
/// </summary>
/// <param name="item">饼图项目</param>
/// <returns>点坐标数组</returns>
private Point GetPoints( PieShapeItem item )
{
    GraphicsPath path = CreatePath( item );
    path.Flatten();
    PointF ps = path.PathPoints ;
    path.Dispose();
    Point ps2 = new Point[ ps.Length ] ;
    for( int iCount = 0 ; iCount < ps.Length ; iCount ++ )
    {
        ps2[ iCount ].X = ( int ) ( ps[ iCount ].X );
        ps2[ iCount ].Y = ( int ) ( ps[ iCount ].Y );
    }
    return ps2 ;
}

&

  • 下一篇资讯: DataList对象属性
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号