2010-07-19 3 views
1

Ok donc je commence à être coincé dans mon design et à obtenir le bon style.WinForms Dégradé (Image ou par code) - Événement OnDraw

Mon thème utilise une interface graphique de style kryptonForm mais kyryptonForms ne pas avoir un pré conçu ListView, donc im avoir à construire moi-même

Mon application est un système de messagerie basé sur XMPP/Jabber afin que vous puissiez deviner comment J'aimerais que ma liste de contacts soit conçue.

J'ai fait la plupart du positionnement, mais j'ai du mal à styliser chaque rangée de contact.

Im visant une superposition transparente simmerler à la liste de messagerie en direct Contacter MSN

Heres mon OnDraw Code événement atm et im du mal à trouver la meilleure façon de faire le gradient

private void ContactItem_OnPaintDraw(object sender, DrawListViewItemEventArgs e) 
    { 

     Rectangle ImageRect = e.Bounds; 
     ImageRect.Inflate(-2, -2); 
     ImageRect.Width = 32; 

     Rectangle TextRect = e.Bounds; 
     TextRect.X = ImageRect.Right + 2; 
     TextRect.Width = e.Bounds.Width - TextRect.X; 

     Rectangle IconRect = TextRect; 
     IconRect.Inflate(-1, 0); 
     IconRect.Y = ImageRect.Bottom - 16; 
     IconRect.Width = 16; 
     IconRect.Height = 16; 

     if ((e.State & ListViewItemStates.Selected) != 0) 
     { 
      // Draw the background and focus rectangle for a selected item. 
      e.Graphics.FillRectangle(ContactListBackgroundBrush, e.Bounds); 
      e.DrawFocusRectangle(); 
     } 
     else 
     { 
      // Draw the background for an unselected item. 
      e.Graphics.FillRectangle(Brushes.White, e.Bounds); 
     } 

     if (ListViewContacts.View != View.Details) 
     { 

      e.Graphics.DrawImage((Image)Resources.UserIconDefault, ImageRect); 

      TextRenderer.DrawText(e.Graphics, e.Item.Text, e.Item.Font, TextRect, e.Item.ForeColor, TextFormatFlags.GlyphOverhangPadding); 
     } 
    } 

Et la ContactListBackgroundBrush var est comme si

private Brush ContactListBackgroundBrush = new SolidBrush(Color.FromArgb(33, 162, 191)); 

son ce que je dois convertir à l'élément de style

alt text http://screensnapr.com/u/yeq8o0.png

Je cherche à obtenir ce style Highlighted sans importer toutes les fenêtres spécifiques 7 fichiers DLL que l'application est utilisée pour Windows XP ainsi.

espérons que vous les gars peuvent me aider :)

+0

Utilisez-vous Winforms? (Je suppose que c'est ce que vous utilisez en raison de l'utilisation de 'DrawListViewItemEventArgs') Probablement une bonne idée d'ajouter" Winforms "à votre liste de balises. Je serais probablement en mesure d'aider si c'était wpf ... –

+0

Yea WinForms, Ajouté à la liste des tags, désolé à ce sujet. Merci bien – RobertPitt

+0

a également ajouté à votre titre, car il est pertinent, et supprimé C#, ce qui n'était pas pertinent. –

Répondre

2

Vous pouvez définir une brosse comme LinearGradientBrush, recherchez le msnd documentation. C'est à mon humble avis la meilleure façon, pour dessiner des gradients ..

Questions connexes