在C#中绘制带圆角,边框和渐变填充的图像

时间:2010-12-01 14:57:04

标签: c# asp.net graphics gradient rounded-corners

我到处寻找并搜索所有内容,但找不到任何好处。 我需要的是一个能够绘制带圆角的图像(图形)的类(每个角上不同是一个加号),带有边框和渐变填充。

我发现的所有例子都有一些缺陷(如质量差,缺少功能等)。

我将使用ashx绘制图像,然后将其显示给用户。

谢谢!

2 个答案:

答案 0 :(得分:9)

GraphicsPath允许您绘制相对自由的形状形状,然后可以使用渐变画笔填充。下面的示例代码将创建一个带有两个不同圆角和渐变填充的矩形。

    GraphicsPath gp = new GraphicsPath();
    gp.AddLine(new Point(10, 10), new Point(75, 10));
    gp.AddArc(50, 10, 50, 50, 270, 90);
    gp.AddLine(new Point(100, 35), new Point(100, 100));
    gp.AddArc(80, 90, 20, 20, 0, 90);
    gp.AddLine(new Point(90, 110), new Point(10, 110));
    gp.AddLine(new Point(10, 110), new Point(10, 10));
    Bitmap bm = new Bitmap(110, 120);
    LinearGradientBrush brush = new LinearGradientBrush(new Point(0, 0), new Point(100, 110), Color.Red, Color.Yellow);
    using (Graphics g = Graphics.FromImage(bm))
    {
        g.FillPath(brush, gp);
        g.DrawPath(new Pen(Color.Black, 1), gp);
        g.Save();
    }
    bm.Save(@"c:\bitmap.bmp");

结果如下图所示:

alt text

答案 1 :(得分:0)

我认为您需要创建自己的方法,使用图形对象并“手动”(阅读“带代码”)创建图像。最简单的方法是创建单个图形对象,添加一个圆,然后在图像的每个象限中添加所需的额外内容,然后将对象拆分为四分之一。或者将整个事物作为一个图像返回,然后使用CSS精灵将图像放置在具有正确坐标的正确位置(可能是更好的解决方案,因为它使用较少的图形库调用并返回一个文件,因此对Web的调用较少服务器)。