protected override void DrawGroupHeaderOn(Gdi gMem, int item, Rectangle rHeaderArea) { //gMem.Font = Settings.GroupFont; //gMem.TextAlign = Win32.TextAlign.TA_LEFT; ////gMem.TextColor = Color.FromArgb(150, 150, 150); ////gMem.ExtTextOut(rHeaderArea.Left + UISettings.CalcPix(5) + 1, rHeaderArea.Top + Settings.GroupPixTopMargin + 1, GetItemAtIndex(item).Group, true); //gMem.TextColor = Settings.ListGroupTextColor; //gMem.ExtTextOut(rHeaderArea.Left + UISettings.CalcPix(5), rHeaderArea.Top + Settings.GroupPixTopMargin, GetItemAtIndex(item).Group, true); //gMem.Font = Settings.GroupFont; //gMem.TextAlign = Win32.TextAlign.TA_LEFT; //gMem.TextColor = Settings.ListGroupTextColor; //Size newSize = gMem.GetTextExtent(GetItemAtIndex(item).Group); //gMem.ExtTextOut(rHeaderArea.Left + UISettings.CalcPix(5), rHeaderArea.Top + (rHeaderArea.Height - newSize.Height) / 2, GetItemAtIndex(item).Group, true); gMem.Font = Settings.GroupFont; gMem.TextAlign = Win32.TextAlign.TA_LEFT; Size newSize = gMem.GetTextExtent(GetItemAtIndex(item).Group); gMem.TextColor = Color.FromArgb(150, 150, 150); gMem.ExtTextOut(rHeaderArea.Left + UISettings.CalcPix(5) + UISettings.CalcPix(1), rHeaderArea.Top + (rHeaderArea.Height - newSize.Height) / 2 + UISettings.CalcPix(1), GetItemAtIndex(item).Group); gMem.TextColor = Settings.ListGroupTextColor; gMem.ExtTextOut(rHeaderArea.Left + UISettings.CalcPix(5), rHeaderArea.Top + (rHeaderArea.Height - newSize.Height) / 2, GetItemAtIndex(item).Group); }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemDataNew item = (NativeItemDataNew)nativeItem; //выделение DrawItemBackgroundOn(g, item, rItem, nItem, SelectedIndex == nItem); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(205, 205, 205))); //Имя int topIndent = rItem.Top + item.InfoTopIndents[0]; int leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[0]; if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } //Дата topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(1); //из-за разных шрифтов leftIndent = rItem.Right - item.InfoLeftIndents[2]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; g.TextColor = Color.FromArgb(51, 153, 255); g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } //Текст сообщения leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[0]; topIndent = rItem.Top + item.InfoTopIndents[1]; if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } }
public override void DrawItemOn(Gdi g, Rectangle rItem) { int x = rItem.Width / 2; int y = (rItem.Height - _imageSize.Height) / 2; Color color1; Color color2; g.Font = Font; if ((string)DataSource.OptionValue == DataSource.OptionValues[0]) { if (_itemLeftSelected != null) { g.DrawImageAlphaChannel(_itemLeftSelected, rItem.Left + x - _imageSize.Width, rItem.Top + y); } if (_itemRight != null) { g.DrawImageAlphaChannel(_itemRight, rItem.Left + x, rItem.Top + y); } color1 = Color.White; color2 = Color.Gray; } else { if (_itemLeft != null) { g.DrawImageAlphaChannel(_itemLeft, rItem.Left + x - _imageSize.Width, rItem.Top + y); } if (_itemRightSelected != null) { g.DrawImageAlphaChannel(_itemRightSelected, rItem.Left + x, rItem.Top + y); } color1 = Color.Gray; color2 = Color.White; } g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = color1; Size textSize = g.GetTextExtent(DataSource.OptionValues[0]); y = (rItem.Height - textSize.Height) / 2; int left = x - _imageSize.Width; g.ExtTextOut(rItem.Left + left, rItem.Top + y, _imageSize.Width, DataSource.OptionValues[0]); g.TextColor = color2; left = x; g.ExtTextOut(rItem.Left + left, rItem.Top + y, _imageSize.Width, DataSource.OptionValues[1]); }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { if (rItem.Height > Settings.ListItemPixSize) { rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); } DrawItemBackgroundOn(g, nativeItem, rItem, nItem, /*nItem == SelectedIndex*/ false); var rSep = new Rectangle(rItem.Left, rItem.Bottom - 1, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); // write name if (!string.IsNullOrEmpty(nativeItem.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(rItem.Left + nativeItem.InfoLeftIndents[0], rItem.Top + nativeItem.InfoTopIndents[0], nativeItem.PrimaryText); } base.DrawItemOn(g, nativeItem, rItem, nItem); }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { int topIndent; int leftIndent; NativeItemData item = nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; /*if (rItem.Height > Settings.ListItemPixSize) * { * rItem = new Rectangle(rItem.Left, * rItem.Top + rItem.Height - Settings.ListItemPixSize, * rItem.Width, * Settings.ListItemPixSize); * }*/ //фон DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); //иконка + кэширование topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Left + item.InfoLeftIndents[0]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (item.PrimaryImage != null) { ImageInfo iinfo; item.PrimaryImage.GetImageInfo(out iinfo); if (item.Icon == null || isSelected) { g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent, topIndent); if (item.Icon == null & topIndent > 0) { item.Icon = new Bitmap((int)iinfo.Width, (int)iinfo.Height); g.CopyImageTo(item.Icon, 0, 0, Settings.PrimaryIconPixWidth, Settings.PrimaryIconPixHeight, leftIndent, topIndent); } } else { g.DrawImage(item.Icon, leftIndent, topIndent); } } //Имя topIndent = rItem.Top + item.InfoTopIndents[0] - UISettings.CalcPix(2); leftIndent = rItem.Left + item.InfoLeftIndents[1]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } //Дата topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Right - item.InfoLeftIndents[2]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(51, 153, 255); } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } ////Статус //topIndent = rItem.Top + item.InfoTopIndents[1]; //leftIndent = rItem.Left + item.InfoLeftIndents[1]; //if (!string.IsNullOrEmpty(item.SecondaryText)) //{ // g.Font = Settings.SecondaryTextFontGdi; // g.TextAlign = Win32.TextAlign.TA_LEFT; // if (isSelected) g.TextColor = Color.White; // else g.TextColor = Color.FromArgb(102, 102, 102); // int colPrev = 0; // int line = Settings.SecondaryTextLinesCount; // do // { // int col = item.SecondaryText.IndexOf('\n', colPrev); // string text; // if (col > -1) // { // text = item.SecondaryText.Substring(colPrev, col - colPrev); // } // else // { // text = item.SecondaryText.Substring(colPrev); // } // g.ExtTextOut(leftIndent, topIndent, text); // colPrev = col + 1; // line--; // topIndent += UISettings.CalcPix(11); // } // while (colPrev > 0 && line > 0); //} //if (item.SecondaryTextLines != null && item.SecondaryTextLines.Count > 0) //{ // g.Font = _secFont; // g.TextAlign = Win32.TextAlign.TA_LEFT; // g.TextColor = Color.FromArgb(102, 102, 102); // foreach (string line in item.SecondaryTextLines) // { // g.ExtTextOut(leftIndent, topIndent, line); // topIndent += UISettings.CalcPix(11); // } //} // текст сообщения leftIndent = rItem.Left + item.InfoLeftIndents[1]; topIndent = rItem.Top + item.InfoTopIndents[1]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); if (isSelected) { g.TextColor = Color.White; } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { //Дефолтный цвет для Enabled элементов g.TextColor = Settings.ListItemTextColor; #region Отображение disabled элементов bool isNotifficationOff = false; foreach (var item in Items) { if (item.OptionName == nativeItem.PrimaryText) { //Выясняем стоит ли BackgroundNotification в Off foreach (var item2 in Items) { if (item2.OptionName == Resources.BackgroundNotification && (string)item2.OptionValue == Resources.Settings_Off) { isNotifficationOff = true; } } if (item.OptionName == Resources.Settings_Messages) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } if (item.OptionName == Resources.Settings_Comments && isNotifficationOff) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } if (item.OptionName == Resources.Settings_Friends && isNotifficationOff) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } if (item.OptionName == Resources.Settings_FriendsNews && isNotifficationOff) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } if (item.OptionName == Resources.Settings_FriendsPhotos && isNotifficationOff) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } if (item.OptionName == Resources.Settings_WallMessages && isNotifficationOff) { //((CheckBoxNativeItemData) nativeItem).CheckBoxSelected = MasterForm.SkinManager.GetImage("SettingsUnavailable"); g.TextColor = Color.FromArgb(213, 213, 213); } } } #endregion if (rItem.Height > Settings.ListItemPixSize) { rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); } //Не надо делать выделение DrawItemBackgroundOn(g, nativeItem, rItem, nItem, /*nItem == SelectedIndex*/ false); var rSep = new Rectangle(rItem.Left, rItem.Bottom - 1, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); // write name if (!string.IsNullOrEmpty(nativeItem.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.ExtTextOut(rItem.Left + nativeItem.InfoLeftIndents[0], rItem.Top + nativeItem.InfoTopIndents[0], nativeItem.PrimaryText); } base.DrawItemOn(g, nativeItem, rItem, nItem); }
protected override void OnRender(Gdi graphics, Rectangle clipRect) { graphics.Font = Font; graphics.TextAlign = Galssoft.VKontakteWM.Components.Common.SystemHelpers.Win32.TextAlign.TA_LEFT; if (string.IsNullOrEmpty(_text)) { _text = string.Empty; } _textToPrint = _text.Replace("<br>", "\n"); if (!_textOld.Equals(_textToPrint)) { _textOld = _textToPrint; _lines.Clear(); } int totalHeight = 0; int averageHeight = 0; #region распил текста на строчки выполняется только если _lines пустой if (_lines.Count == 0) { //пилим по переносам строки... string[] lines = _textToPrint.Split('\n'); foreach (string line in lines) { int ipreviouscol = 0; string text = line; string outtext = string.Empty; int icol = text.Length; int maxChars; do { text = line.Substring(ipreviouscol); int[] extents; Size size = graphics.GetTextExtent(text, clipRect.Width, out extents, out maxChars); totalHeight += size.Height; if (totalHeight > clipRect.Height) { totalHeight -= size.Height; break; } bool isSpace = false; //признак пробела if (text.Length > maxChars) { //ищем последний с позиции в начало maxChars пробел int iSpace = text.LastIndexOf(' ', maxChars, maxChars); if (iSpace > -1) { isSpace = true; icol = iSpace; } else { isSpace = false; icol = maxChars; } outtext = text.Substring(0, icol); } else { outtext = text; } //учитываем пробел в конце строки if (isSpace) { ipreviouscol += (icol + 1); } else { ipreviouscol += icol; } _lines.Add(outtext); }while (text.Length > maxChars); } _totalHeight = totalHeight; } #endregion totalHeight = _totalHeight; if (_lines.Count != 0) { averageHeight = totalHeight / _lines.Count; } int iter = 0; foreach (string line in _lines) { int leftIndent = 0; int topIndent = 0; Size size = graphics.GetTextExtent(line); switch (HorizontalTextAlignment) { case HorizontalAlignment.Left: leftIndent = clipRect.Left; break; case HorizontalAlignment.Center: case HorizontalAlignment.Stretch: leftIndent = clipRect.Left + (clipRect.Width - size.Width) / 2; break; case HorizontalAlignment.Right: leftIndent = clipRect.Left + (clipRect.Width - size.Width); break; } switch (VerticalTextAlignment) { case VerticalAlignment.Top: topIndent = clipRect.Top; break; case VerticalAlignment.Center: case VerticalAlignment.Stretch: topIndent = clipRect.Top + (clipRect.Height - totalHeight) / 2; break; case VerticalAlignment.Bottom: topIndent = clipRect.Top + (clipRect.Height - totalHeight); break; } //тень if (_dropShadow) { graphics.TextColor = FontColorShadow; graphics.ExtTextOut(leftIndent + UISettings.CalcPix(1), topIndent + averageHeight * iter + UISettings.CalcPix(1), line); } graphics.TextColor = FontColor; graphics.ExtTextOut(leftIndent, topIndent + averageHeight * iter, line); iter++; } }
protected override void OnRender(Gdi graphics, Rectangle clipRect) { if (_leftPart != null && _rightPart != null && _centerPart != null) { var rect = new Rectangle(clipRect.Left + _leftPartSize.Width, clipRect.Top, clipRect.Width - _rightPartSize.Width - _leftPartSize.Width, clipRect.Height); if (!_pressed) { graphics.DrawImageAlphaChannel(_leftPart, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPart, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPart, rect); } else { graphics.DrawImageAlphaChannel(_leftPartPressed, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPartPressed, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPartPressed, rect); } if (!string.IsNullOrEmpty(Text)) { FontGdi font = Font; if (_pressed) { font = PressedFont; } /*else if (_selected) * font = SelectedFont;*/ Color color = FontColor; if (_pressed) { color = PressedFontColor; } /*else if (_selected) * color = SelectedFontColor;*/ graphics.Font = font; graphics.TextColor = color; Size textSize = graphics.GetTextExtent(Text); int topAdjust = 0; switch (VerticalTextAlignment) { case VerticalAlignment.Top: topAdjust = 0 + _verticalTextMargin; break; case VerticalAlignment.Bottom: topAdjust = Height - textSize.Height - _verticalTextMargin; break; case VerticalAlignment.Center: topAdjust = (Height - textSize.Height) / 2; break; } if (_dropShadow && !_pressed) { graphics.TextColor = FontColorShadow; graphics.ExtTextOut(clipRect.Left + (clipRect.Width - textSize.Width) / 2 + UISettings.CalcPix(1), clipRect.Top + topAdjust + UISettings.CalcPix(1), textSize.Width, Text); } graphics.TextColor = color; graphics.ExtTextOut(clipRect.Left + (clipRect.Width - textSize.Width) / 2, clipRect.Top + topAdjust, textSize.Width, Text); } } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemData item = nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; if (rItem.Height > Settings.ListItemPixSize) { rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); } //Фон DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //Аватарка int leftIndent = rItem.Left + item.InfoLeftIndents[0]; int topIndent = rItem.Top + item.InfoTopIndents[0]; #region выводим изображение int index = -1; for (int i = 0; i < NativeItems.Count; i++) { var ni = NativeItems[i]; if (ni.Uid == item.Uid) { index = i; break; } } if (index > -1) { if (IsItemVisible(index)) { if (!string.IsNullOrEmpty(item.PrimaryImageURL)) { if (!item.PrimaryImageURL.Equals("clear")) { IImage newIImage = null; if (File.Exists(item.PrimaryImageURL)) { ImageHelper.LoadImageFromFile(item.PrimaryImageURL, out newIImage); item.PrimaryImage = newIImage; } else { item.PrimaryImage = MasterForm.SkinManager.GetImage("ImageNull"); } } else { item.PrimaryImage = MasterForm.SkinManager.GetImage("ImageNull"); } item.PrimaryImageURL = string.Empty; } int imageMarginLeft = 0; int imageMarginTop = 0; ImageInfo newImageInfo; item.PrimaryImage.GetImageInfo(out newImageInfo); imageMarginLeft = 0; imageMarginTop = 0; g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent + imageMarginLeft, topIndent + imageMarginTop); } } #endregion //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); //Имя leftIndent = rItem.Left + item.InfoLeftIndents[1]; topIndent = rItem.Top + item.InfoTopIndents[1]; if (!string.IsNullOrEmpty(item.PrimaryText) && !string.IsNullOrEmpty(item.SecondaryText)) { g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.Font = Settings.PrimaryTextFontGdi; Size size = g.GetTextExtent(item.PrimaryText); g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); leftIndent += size.Width; g.Font = Settings.SecondaryTextFontGdi; g.ExtTextOut(leftIndent, topIndent, item.SecondaryText); } //Online leftIndent = rItem.Left + item.InfoLeftIndents[2]; topIndent = rItem.Top + item.InfoTopIndents[2]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(150, 150, 150); } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemData item = nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; if (rItem.Height > Settings.ListItemPixSize) { rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); } //фон DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //Картинка int topIndent = rItem.Top; int leftIndent = rItem.Left; #region выводим изображения int index = -1; for (int i = 0; i < NativeItems.Count; i++) { var ni = NativeItems[i]; if (ni.Uid == item.Uid) { index = i; break; } } if (index > -1) { if (IsItemVisible(index)) { if (!string.IsNullOrEmpty(item.PrimaryImageURL)) { if (!item.PrimaryImageURL.Equals("clear")) { IImage newIImage = null; //ImageHelper.LoadImageFromFile(item.PrimaryImageURL, out newIImage); //item.PrimaryImage = newIImage; if (File.Exists(item.PrimaryImageURL)) { ImageHelper.LoadImageFromFile(item.PrimaryImageURL, out newIImage); item.PrimaryImage = newIImage; } else { item.PrimaryImage = MasterForm.SkinManager.GetImage("ImageNull"); } } else { item.PrimaryImage = MasterForm.SkinManager.GetImage("ImageNull"); } item.PrimaryImageURL = string.Empty; } int imageMarginLeft = 0; int imageMarginTop = 0; ImageInfo newImageInfo; item.PrimaryImage.GetImageInfo(out newImageInfo); imageMarginLeft = 0; imageMarginTop = 0; g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent + imageMarginLeft, topIndent + imageMarginTop); } } #endregion //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); //имя topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Left + item.InfoLeftIndents[1]; if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } //дата topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Right - item.InfoLeftIndents[2]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(51, 153, 255); } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } //Комментарий topIndent = rItem.Top + item.InfoTopIndents[1]; leftIndent = rItem.Left + item.InfoLeftIndents[1]; if (!string.IsNullOrEmpty(item.SecondaryText)) { //g.Font = Settings.SecondaryTextFontGdi; //g.TextAlign = Win32.TextAlign.TA_LEFT; //if (isSelected) g.TextColor = Color.White; //else g.TextColor = Color.FromArgb(102, 102, 102); //int colPrev = 0; //int line = Settings.SecondaryTextLinesCount; //do //{ // int col = item.SecondaryText.IndexOf('\n', colPrev); // string text; // if (col > -1) // { // text = item.SecondaryText.Substring(colPrev, col - colPrev); // } // else // { // text = item.SecondaryText.Substring(colPrev); // } // g.ExtTextOut(leftIndent, topIndent, text); // colPrev = col + 1; // line--; // topIndent += UISettings.CalcPix(11); //} //while (colPrev > 0 && line > 0); if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); if (isSelected) { g.TextColor = Color.White; } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } } }
protected override void OnRender(Gdi graphics, Rectangle clipRect) { //graphics.DrawText(_message, // new Win32.RECT(_textRectangle.X, // _textRectangle.Y, // _textRectangle.Width, // _textRectangle.Height), // Win32.DT.LEFT | Win32.DT.TOP | Win32.DT.WORDBREAK); clipRect.Intersect(this.Rectangle); if (clipRect.IsEmpty) { return; } //base.OnRender(graphics, clipRect); //SetupDefaultClip(g); float topAdjust = 0; switch (VerticalTextAlignment) { case VerticalAlignment.Top: topAdjust = 0; break; case VerticalAlignment.Bottom: //topAdjust = ClientHeight - _totalHeight; topAdjust = Height - _totalHeight; break; case VerticalAlignment.Center: //topAdjust = (ClientHeight - _totalHeight) / 2; topAdjust = (Height - _totalHeight) / 2; break; } if (BackColor != Color.Transparent) { graphics.FillRect( //new Rectangle(e.Origin.X, e.Origin.Y, ClientWidth, ClientHeigh), clipRect, BackColor); } foreach (LineBreak lineBreak in _lineBreaks) { float leftAdjust = 0; switch (HorizontalTextAlignment) { case HorizontalAlignment.Left: leftAdjust = 0; break; case HorizontalAlignment.Right: //leftAdjust = ClientWidth - lineBreak.Width; leftAdjust = Width - lineBreak.Width; break; case HorizontalAlignment.Center: //leftAdjust = (ClientWidth - lineBreak.Width) / 2.0f; leftAdjust = (Width - lineBreak.Width) / 2.0f; break; } Rectangle drawRect = new Rectangle(this.Left + Margin.Left + (int)leftAdjust, this.Top + Margin.Top + (int)topAdjust, (int)lineBreak.Width, (int)lineBreak.Height); if (clipRect.IntersectsWith(drawRect)) { graphics.Font = Font; graphics.TextColor = ForeColor; //graphics. //TODO: chhange all this code to only one single DrawText graphics.ExtTextOut(drawRect.Left, drawRect.Top, drawRect.Width, lineBreak.Text); // new Galssoft.WM.Components.SystemHelpers.Win32.RECT(drawRect), Galssoft.WM.Components.SystemHelpers.Win32.DT.LEFT); //Font, myForeBrush, e.Origin.X + leftAdjust, e.Origin.Y + topAdjust); } topAdjust += lineBreak.Height; if (topAdjust > Height) { break; } } }
protected override void OnRender(Gdi gMem, Rectangle clipRect) { switch (Style) { case ButtonStyle.AlphaChannel: IImage img1 = null; if (_selected && !_pressed) { img1 = TransparentButtonSelected; } if (_pressed || (_selected && img1 == null)) { img1 = TransparentButtonPressed; } if (!_pressed && !_selected) { img1 = TransparentButton; } if (img1 != null) { gMem.DrawImageAlphaChannel(img1, clipRect); } break; case ButtonStyle.TransparentBackground: ImageData img2 = null; if (_selected && !_pressed) { img2 = ButtonSelected; } if (_pressed || (_selected && img2 == null)) { img2 = ButtonPressed; } if (!_pressed && !_selected) { img2 = Button; } if (img2 != null) { int imgWidth = img2.ImageSize.Width; int imgHeight = img2.ImageSize.Height; gMem.TransparentImage(clipRect.Left, clipRect.Top, clipRect.Width, clipRect.Height, img2.ImageHandle, img2.ImageOffset.X, img2.ImageOffset.Y, imgWidth, imgHeight, img2.TransparentColor); } break; default: if (_pressed || _selected) { gMem.FillRect(clipRect, BackColor); } else { gMem.FillRect(clipRect, ForeColor); } break; } if (!string.IsNullOrEmpty(Text)) { FontGdi font = Font; if (_pressed) { font = PressedFont; } else if (_selected) { font = SelectedFont; } Color color = FontColor; if (_pressed) { color = PressedFontColor; } else if (_selected) { color = SelectedFontColor; } gMem.Font = font; gMem.TextColor = color; Size textSize = gMem.GetTextExtent(Text); int topAdjust = 0; switch (VerticalTextAlignment) { case VerticalAlignment.Top: topAdjust = 0 + _verticalTextMargin; break; case VerticalAlignment.Bottom: topAdjust = Height - textSize.Height - _verticalTextMargin; break; case VerticalAlignment.Center: topAdjust = (Height - textSize.Height) / 2; break; } gMem.ExtTextOut(clipRect.Left + (clipRect.Width - textSize.Width) / 2, clipRect.Top + topAdjust, textSize.Width, Text); } }
protected override void OnRender(Gdi graphics, Rectangle clipRect) { if (_leftPart != null && _rightPart != null && _centerPart != null) { Rectangle rect = new Rectangle(clipRect.Left + _leftPartSize.Width, clipRect.Top, clipRect.Width - _rightPartSize.Width - _leftPartSize.Width, clipRect.Height); if (!_pressed) { graphics.DrawImageAlphaChannel(_leftPart, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPart, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPart, rect); } else { graphics.DrawImageAlphaChannel(_leftPartPressed, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPartPressed, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPartPressed, rect); } #region отрисовка текста комментария graphics.Font = Font; graphics.TextAlign = Galssoft.VKontakteWM.Components.Common.SystemHelpers.Win32.TextAlign.TA_LEFT; if (string.IsNullOrEmpty(_text)) { _text = string.Empty; if (string.IsNullOrEmpty(_textSubstitute)) { _textToPrint = string.Empty; } else { _textToPrint = _textSubstitute; } graphics.TextColor = FontColorUnactive; } else { _textToPrint = _text; graphics.TextColor = FontColor; } if (_pressed) { graphics.TextColor = FontColorInvert; } if (!_textOld.Equals(_textToPrint)) { _textOld = _textToPrint; _lines.Clear(); } int topIndent = 0; int totalHeight = 0; int averageHeight = 0; #region распил текста на строчки выполняется только если _lines пустой if (_lines.Count == 0) { //пилим по переносам строки... string[] lines = _textToPrint.Split('\n'); foreach (string line in lines) { int ipreviouscol = 0; string text = line; string outtext = string.Empty; int icol = text.Length; int maxChars; do { text = line.Substring(ipreviouscol); int[] extents; Size size = graphics.GetTextExtent(text, clipRect.Width - _leftPartSize.Width - _rightPartSize.Width, out extents, out maxChars); totalHeight += size.Height * 11 / 10; bool isSpace = false; //признак пробела bool isOver = false; //признак необходимости новой строки if (text.Length > maxChars) { isOver = true; //ищем последний с позиции в начало maxChars пробел int iSpace = text.LastIndexOf(' ', maxChars, maxChars); if (iSpace > -1) { isSpace = true; icol = iSpace; } else { isSpace = false; icol = maxChars; } outtext = text.Substring(0, icol); } else { isOver = false; outtext = text; } //учитываем пробел в конце строки if (isSpace) { ipreviouscol += (icol + 1); } else { ipreviouscol += icol; } //добавляем точечки if ((_lines.Count + 1) < 2) { _lines.Add(outtext); } else { if (isOver) { outtext = outtext.Remove(outtext.Length - 3, 3); if (outtext.EndsWith(" ")) { outtext = outtext.Remove(outtext.Length - 1, 1); } outtext += "..."; } _lines.Add(outtext); break; } }while (text.Length > maxChars); break; } _totalHeight = totalHeight; } #endregion totalHeight = _totalHeight; averageHeight = totalHeight / _lines.Count; foreach (string line in _lines) { //для отображения используется прямоугольник 4/5 от ширины контрола //отступ: 4 зазора от левого края //graphics.ExtTextOut(clipRect.Left + (clipRect.Width - clipRect.Width * 4 / 5) / 4, clipRect.Top + topIndent + (clipRect.Height - totalHeight) / 2, line); graphics.ExtTextOut(clipRect.Left + _leftPartSize.Width, clipRect.Top + topIndent + (clipRect.Height - totalHeight) / 2, line); topIndent += averageHeight; } #endregion } /* switch (Style) * { * case ButtonStyle.AlphaChannel: * IImage img1 = null; * if (_selected && !_pressed) * img1 = TransparentButtonSelected; * if (_pressed || (_selected && img1 == null)) * img1 = TransparentButtonPressed; * if (!_pressed && !_selected) * img1 = TransparentButton; * * if (img1 != null) * gMem.DrawImageAlphaChannel(img1, clipRect); * break; * case ButtonStyle.TransparentBackground: * ImageData img2 = null; * if (_selected && !_pressed) * img2 = ButtonSelected; * if (_pressed || (_selected && img2 == null)) * img2 = ButtonPressed; * if (!_pressed && !_selected) * img2 = Button; * * if (img2 != null) * { * int imgWidth = img2.ImageSize.Width; * int imgHeight = img2.ImageSize.Height; * gMem.TransparentImage(clipRect.Left, clipRect.Top, * clipRect.Width, * clipRect.Height, * img2.ImageHandle, * img2.ImageOffset.X, * img2.ImageOffset.Y, * imgWidth, * imgHeight, * img2.TransparentColor); * } * break; * default: * if (_pressed) * gMem.FillRect(clipRect, BackColor); * else * gMem.FillRect(clipRect, ForeColor); * break; * } * * if (!string.IsNullOrEmpty(Text)) * { * gMem.Font = Font; * gMem.TextColor = FontColor; * Size textSize = gMem.GetTextExtent(Text); * gMem.ExtTextOut(clipRect.Left + (clipRect.Width - textSize.Width) / 2, * clipRect.Top + (clipRect.Height - textSize.Height) / 2, textSize.Width, Text); * }*/ }
protected override void DrawItemOn(Gdi g, NativeItemData nativeitem, Rectangle rItem, int nItem) { var item = (NativeItemDataMm)nativeitem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); if (nItem == 0) { rItem = new Rectangle(rItem.Left, rItem.Top + UISettings.CalcPix(5), rItem.Width, rItem.Height - UISettings.CalcPix(10)); } else { rItem = new Rectangle(rItem.Left, rItem.Top, rItem.Width, rItem.Height - UISettings.CalcPix(5)); } int iconMargin = UISettings.CalcPix(15); int iconX = rItem.Left + iconMargin; // draw icon /* * if (item.Icon != null) * { * ImageInfo iinfo; * item.Icon.GetImageInfo(out iinfo); * int iconY = rItem.Top + (rItem.Height - (int) iinfo.Height)/2; * * if (item.PrimaryImage == null || isSelected) * { * g.DrawImageAlphaChannel(item.Icon, iconX, iconY); * * if (item.PrimaryImage == null & iconY > 0) * { * item.PrimaryImage = new Bitmap((int) iinfo.Width, (int) iinfo.Height); * g.CopyImageTo(item.PrimaryImage, 0, 0, Settings.PrimaryIconPixWidth, * Settings.PrimaryIconPixHeight, iconX, iconY); * } * } * else * { * g.DrawImage(item.PrimaryImage, iconX, iconY); * } * } */ if (!String.IsNullOrEmpty(item.PrimaryText)) { g.Font = FontCache.CreateFont("Tahoma", 16, FontStyle.Regular, true); if (isSelected) { g.TextColor = Color.FromArgb(255, 255, 255); } else { g.TextColor = Color.FromArgb(119, 126, 93); } g.TextAlign = Win32.TextAlign.TA_LEFT; Size textSize = g.GetTextExtent(item.PrimaryText); g.ExtTextOut(rItem.Left + (rItem.Width - textSize.Width) / 2, rItem.Top + (rItem.Height - textSize.Height) / 2, item.PrimaryText); } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemData item = nativeItem; if (rItem.Height > Settings.ListItemPixSize) { rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); } //Если выделен DrawItemBackgroundOn(g, item, rItem, nItem, SelectedIndex == nItem); var rSep = new Rectangle(rItem.Left, rItem.Bottom - 1, rItem.Width, 1); //полоска g.FillRect(rSep, Settings.ListItemSeparator); // int leftIndent = rItem.Left + Settings.TextPixMargin; int topIndent = rItem.Bottom - rItem.Height + item.InfoTopIndents[0]; // write name //Отрисовка изображения if (item.PrimaryImage != null) { g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent, topIndent); } leftIndent += Settings.SecondaryIconPixWidth + Settings.TextPixMargin; //определение размеров текста g.GetTextExtent /* * Size textSize = g.GetTextExtent(vals[0] + " "); * g.ExtTextOut(rItem.Left + rItem.Width / 2 - textSize.Width, * rItem.Bottom - item.InfoTopIndents[0], * textSize.Width, * vals[0]); */ if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } if (!string.IsNullOrEmpty(item.SecondaryText)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(leftIndent, topIndent + 10, item.SecondaryText); } if (!string.IsNullOrEmpty(item.SecondaryText)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(leftIndent, topIndent + 20, item.TertiaryText); } /* * if(item.SecondaryImage != null) * { * g.DrawImageAlphaChannel(item.SecondaryImage, rItem.Right - Settings.SecondaryIconPixWidth + Settings.TextPixMargin, topIndent); * } */ }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { int topIndent; int leftIndent; NativeItemData item = nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; //фон DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Settings.ListItemSeparator); // дата topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Right - item.InfoLeftIndents[1]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; g.TextColor = Color.FromArgb(51, 153, 255); if (isSelected) { g.TextColor = Color.White; } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } // текст сообщения leftIndent = rItem.Left + item.InfoLeftIndents[0]; topIndent = rItem.Top + item.InfoTopIndents[0]; if (IsItemNewGroup(nItem)) { topIndent += Settings.GroupPixHeight; } if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); if (isSelected) { g.TextColor = Color.White; } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemData item = nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; if (!(nItem > 1)) { isSelected = false; } //bool isSelected; //if (SelectedIndex == nItem) //{ //} //if nItem //if (SelectedIndex == nItem) //{ // isSe //} // //if (rItem.Height > Settings.ListItemPixSize) //{ // rItem = new Rectangle(rItem.Left, rItem.Top + rItem.Height - Settings.ListItemPixSize, rItem.Width, Settings.ListItemPixSize); //} // выделение DrawItemBackgroundOn(g, item, rItem, nItem, SelectedIndex == nItem); //// полоска //var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); //g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(205, 205, 205))); // загрузка изображения... if (!string.IsNullOrEmpty(item.PrimaryImageURL)) { if (!item.PrimaryImageURL.Equals("clear")) { IImage newIImage = null; ImageHelper.LoadImageFromFile(item.PrimaryImageURL, out newIImage); item.PrimaryImage = newIImage; } else { item.PrimaryImage = MasterForm.SkinManager.GetImage("ImageNull"); } if (item.PrimaryImage != null) { ImageInfo ii; item.PrimaryImage.GetImageInfo(out ii); Size imageSize = new Size((int)ii.Width, (int)ii.Height); item.Icon = new Bitmap(imageSize.Width, imageSize.Height); //Create cached image using (Graphics gr = Graphics.FromImage(item.Icon)) { IntPtr grPtr = gr.GetHdc(); Rectangle rect = new Rectangle(0, 0, imageSize.Width, imageSize.Height); item.PrimaryImage.Draw(grPtr, ref rect, IntPtr.Zero); gr.ReleaseHdc(grPtr); } } item.PrimaryImageURL = string.Empty; } if (item.Icon != null) // если есть изображение, то айтем первого типа { g.DrawImage(item.Icon, rItem.Left + (rItem.Width - item.Icon.Width) / 2, rItem.Top + (rItem.Height - item.Icon.Height) / 2); //g.DrawImageAlphaChannel(item.PrimaryImage, rItem.Left + (rItem.Width - item.ImageSize.Width) / 2, rItem.Top + (rItem.Height - item.ImageSize.Height) / 2); } else // 2 или 3 { // полоска Rectangle rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(205, 205, 205))); int topIndent = rItem.Top + item.InfoTopIndents[0]; int leftIndent = rItem.Left + item.InfoLeftIndents[0]; if (nItem == 1 || nItem == 2) { topIndent += Settings.GroupPixHeight; } if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = _priFont; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.Black; if (isSelected) { g.TextColor = Color.White; } g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } leftIndent = rItem.Left + item.InfoLeftIndents[0]; topIndent = rItem.Top + item.InfoTopIndents[1]; if (nItem == 2) { topIndent += Settings.GroupPixHeight; } if (item.SecondaryTextLines != null && item.SecondaryTextLines.Count > 0) { g.Font = _secFont; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); if (isSelected) { g.TextColor = Color.White; } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } // дата topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Right - item.InfoLeftIndents[2]; if (nItem == 2) { topIndent += Settings.GroupPixHeight; } if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = _secFont; g.TextAlign = Win32.TextAlign.TA_RIGHT; g.TextColor = Color.FromArgb(51, 153, 255); if (isSelected) { g.TextColor = Color.White; } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } } }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemDataNew item = (NativeItemDataNew)nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; //Подложка айтема DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(219, 219, 219))); //IsItemHighlight icon + кэширование int leftIndent = rItem.Left + item.InfoLeftIndents[0] + UISettings.CalcPix(1); int topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(3); if (item.IsItemHighlight && item.PrimaryImage != null) { ImageInfo iinfo; item.PrimaryImage.GetImageInfo(out iinfo); if (item.OutboxIcon == null || isSelected) { //g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent, topIndent); if (item.OutboxIcon == null & topIndent > 0) { item.OutboxIcon = new Bitmap((int)iinfo.Width, (int)iinfo.Height); g.CopyImageTo(item.OutboxIcon, 0, 0, Settings.PrimaryIconPixWidth, Settings.PrimaryIconPixHeight, leftIndent, topIndent); } } else { g.DrawImage(item.OutboxIcon, leftIndent, topIndent); } } //Имя Фамилия topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Left + item.InfoLeftIndents[1]; if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(/*leftIndent*/ UISettings.CalcPix(7), topIndent, item.PrimaryText); } //Дата topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(1); //из-за разных шрифтов leftIndent = rItem.Right - item.InfoLeftIndents[3]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(51, 153, 255); } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } //bool needTab = false; //Я: topIndent = rItem.Top + item.InfoTopIndents[1]; leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[1]; if (item.IsOutboxIconSet) { g.Font = Settings.PrimaryText2FontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(leftIndent, topIndent, Resources.OutboxText); //Отступ для текста сообщения //leftIndent = rItem.Left + item.InfoLeftIndents[2]; leftIndent = rItem.Left + UISettings.CalcPix(22); } //Текст сообщения if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(102, 102, 102); } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } //Arrow topIndent = rItem.Top + item.InfoTopIndents[2]; leftIndent = rItem.Right - item.InfoLeftIndents[4]; //if (isSelected) g.DrawImageAlphaChannel(MasterForm.SkinManager.GetImage("MessagesArrowPressed"), leftIndent, topIndent); //else g.DrawImageAlphaChannel(MasterForm.SkinManager.GetImage("MessagesArrow"), leftIndent, topIndent); if (_cachedImages != null && _cachedImages.Count > 1) { if (isSelected) { g.DrawImage(_cachedImages[1], leftIndent, topIndent); } else { g.DrawImage(_cachedImages[0], leftIndent, topIndent); } } }