用C# GDI+画太极图

研究GDI+了,发现这个东东挺不错的,可以实现很多挺cool的效果,今天尝试画了一个太极图,希望看过的朋友的否极泰来 
(CSDN的这个博客太垃圾了,经常不能传图,本来想把图给大家看的,只好放到别的地方通过链接来访问了)

废话少说,看代码:
aspx部分:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Taiji.aspx.cs" Inherits="Taiji" ContentType="Image/Jpeg" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
    
</div>
    
</form>
</body>
</html>

(注意:第一行的最末尾有:ContentType="Image/Jpeg"语句)

cs代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
/*
 * 
 * 作者:周公
 * 日期:2007-8-16
 * 说明:这是周公用纯GDI+画出的一个太极图。演示了GraphicsPath的用法。
 * 
*/

public partial class Taiji : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        Bitmap image 
= new Bitmap(400400);//图象尺寸
        Graphics graphics = Graphics.FromImage(image);
        Brush blue 
= new SolidBrush(Color.Blue);//定义蓝色笔刷
        Brush red = new SolidBrush(Color.Red);//定义红色笔刷
        GraphicsPath leftPath = new GraphicsPath();//初始化路径
        GraphicsPath rightPath = new GraphicsPath();//初始化路径
        
//定义左边的路径(蓝色部分)
        leftPath.AddArc(004004000180);
        leftPath.AddArc(
01002002000-180);
        leftPath.AddArc(
2001002002000180);

        
//定义右边的路径(红色部分)
        rightPath.AddArc(004004000-180);
        rightPath.AddArc(
01002002000-180);
        rightPath.AddArc(
2001002002000180);
        
//填充左边部分
        graphics.FillPath(blue, leftPath);
        graphics.FillPie(red, 
new Rectangle(901902020), 0360);//填充眼睛
        
//填充右边部分
        graphics.FillPath(red, rightPath);
        graphics.FillPie(blue, 
new Rectangle(2901902020), 0360);//填充眼睛
        graphics.Dispose();
        image.Save(Response.OutputStream, ImageFormat.Jpeg);
//写入到Response输出流中去
    }
}

说明:这里又展示了一种在asp.net中输出图象的方式,在本人的另一篇文章《asp.net中验证码的实现》中是通过程序设置ContentType的,而这里则是直接在aspx页面中设置,然后将画好的图片写入到当前Response对象的输出流中。

posted @ 2007-08-16 10:51  周金桥  阅读(459)  评论(0)    收藏  举报