好的,所以我开始陷入我的设计并且风格正确。
我的主题是使用kryptonForm样式的GUI,但kyryptonForms没有预先设计的ListView,所以我必须自己构建
我的应用程序是基于XMPP / Jabber的信使系统,因此您可以猜测我希望如何设计联系人列表。
我完成了大部分定位,但我正在努力设计每个联系人行。
我的目标是为MSN Live messenger联系人列表提供一些透明的叠加模拟器
继承我的OnDraw事件代码atm并且我正在努力找出做渐变的最佳方法
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);
}
}
ContactListBackgroundBrush
var就像这样
private Brush ContactListBackgroundBrush = new SolidBrush(Color.FromArgb(33, 162, 191));
这是我需要转换为样式元素
alt text http://screensnapr.com/u/yeq8o0.png
我希望获得这种突出显示的样式,而不导入任何特定的Windows 7 DLL文件,因为该应用程序也用于Windows XP。
希望你们能帮助我:)。