2010-12-01 4 views
1

J'ai regardé partout et j'ai tout googlé et je n'ai rien trouvé de bon. Ce dont j'ai besoin, c'est d'une classe qui est capable de dessiner une image (graphiques) avec des coins arrondis (différent sur chaque coin est un plus) avec une bordure et un dégradé.Dessine l'image avec des coins arrondis, des bordures et des dégradés. C#

Tous les exemples que je trouve ont quelques défauts (comme une mauvaise qualité, une fonctionnalité manquante, etc.).

Je vais utiliser cela avec un ashx qui va dessiner l'image et ensuite montrer à l'utilisateur.

Merci!

Répondre

9

Le GraphicsPath vous permet de dessiner des formes de formes relativement libres que vous pouvez ensuite remplir avec une brosse à gradient. L'exemple ci-dessous va créer un rectangle avec deux coins arrondis et un remplissage dégradé.

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"); 

Ce résultat dans l'image suivante:

alt text

0

Je pense que vous devrez créer votre propre méthode, en utilisant un objet graphique et "manuellement" (lire "avec du code") créer l'image. Le plus simple serait de créer un seul objet graphique, d'ajouter un cercle, puis dans chaque quadrant de l'image, ajoutez les extras dont vous avez besoin, puis divisez l'objet en quarts. Ou renvoyez le tout comme une image puis utilisez les sprites CSS pour placer l'image dans les bons endroits avec les bonnes coordonnées (probablement la meilleure solution car elle utilise moins d'appels à la bibliothèque graphique et retourne un seul fichier, donc moins d'appels sur le web serveur).

Questions connexes