/// <summary> /// 绘制列表子项的头像 /// </summary> /// <param name="g">绘图表面</param> /// <param name="subItem">要绘制头像的子项</param> /// <param name="rectSubItem">该子项的区域</param> protected virtual void DrawHeadImage(Graphics g, ChatListSubItem subItem, Rectangle rectSubItem) { if (subItem.IsTwinkle) { //判断改头像是否闪动 if (subItem.IsTwinkleHide) //同理该值 在线程中 取反赋值 return; } int imageHeight = rectSubItem.Height - 10; //根据子项的大小计算头像的区域 subItem.HeadRect = new Rectangle(5, rectSubItem.Top + 5, imageHeight, imageHeight); if (subItem.HeadImage == null) //如果头像位空 用默认资源给定的头像 subItem.HeadImage = global::ChattingCtrl.Properties.Resources._null; if (subItem.Status == ChatListSubItem.UserStatus.OffLine) g.DrawImage(subItem.GetDarkImage(), subItem.HeadRect); else { g.DrawImage(subItem.HeadImage, subItem.HeadRect); //如果在线根据在想状态绘制小图标 if (subItem.Status == ChatListSubItem.UserStatus.QMe) g.DrawImage(global::ChattingCtrl.Properties.Resources.QMe, new Rectangle(subItem.HeadRect.Right - 10, subItem.HeadRect.Bottom - 10, 11, 11)); if (subItem.Status == ChatListSubItem.UserStatus.Away) g.DrawImage(global::ChattingCtrl.Properties.Resources.Away, new Rectangle(subItem.HeadRect.Right - 10, subItem.HeadRect.Bottom - 10, 11, 11)); if (subItem.Status == ChatListSubItem.UserStatus.Busy) g.DrawImage(global::ChattingCtrl.Properties.Resources.Busy, new Rectangle(subItem.HeadRect.Right - 10, subItem.HeadRect.Bottom - 10, 11, 11)); if (subItem.Status == ChatListSubItem.UserStatus.DontDisturb) g.DrawImage(global::ChattingCtrl.Properties.Resources.Dont_Disturb, new Rectangle(subItem.HeadRect.Right - 10, subItem.HeadRect.Bottom - 10, 11, 11)); } //if (subItem.Equals(selectSubItem)) //根据是否选中头像绘制头像的外边框 //g.DrawRectangle(Pens.LightBlue, subItem.HeadRect); //else //g.DrawRectangle(Pens.White, subItem.HeadRect); }