2010-12-01 99 views
1

我已经到处寻找和搜索一切,找不到任何好东西。 我需要的是一个能够用边框和渐变填充来绘制带有圆角(每个角上不同)的图像(图形)的类。绘制图像与圆角,边框和渐变填充C#

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

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

谢谢!

回答

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

0

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