public override void DrawItemOn(Gdi g, Rectangle rItem) { int x = (rItem.Width - _imageSize.Width) / 2; int y = (rItem.Height - _imageSize.Height) / 2; ImageInfo ii; _checkBoxSelected.GetImageInfo(out ii); if ((bool)DataSource.OptionValue) { if (_checkBoxSelected != null) g.DrawImageAlphaChannel(_checkBoxSelected, rItem.Right - (int)ii.Width - UISettings.CalcPix(10), rItem.Top + y); } else { if (_checkBoxEmpty != null) g.DrawImageAlphaChannel(_checkBoxEmpty, rItem.Right - (int)ii.Width - UISettings.CalcPix(10), rItem.Top + y); } }
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); int iconIndentWidth = 0; int iconIndentHeight = 0; switch(_iconType) { case WideButtonWithIconType.Write: case WideButtonWithIconType.Photo: iconIndentWidth = 7; iconIndentHeight = 6; break; case WideButtonWithIconType.Open: iconIndentWidth = 5; iconIndentHeight = 7; break; } if (!_pressed) { graphics.DrawImageAlphaChannel(_leftPart, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPart, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPart, rect); graphics.DrawImageAlphaChannel(_icon, clipRect.Left + UISettings.CalcPix(iconIndentWidth), clipRect.Top + UISettings.CalcPix(iconIndentHeight)); } else { graphics.DrawImageAlphaChannel(_leftPartPressed, clipRect.Left, clipRect.Top); graphics.DrawImageAlphaChannel(_rightPartPressed, rect.Right, clipRect.Top); graphics.DrawImageAlphaChannel(_centerPartPressed, rect); graphics.DrawImageAlphaChannel(_icon, clipRect.Left + UISettings.CalcPix(iconIndentWidth), clipRect.Top + UISettings.CalcPix(iconIndentHeight + 1)); } 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; } int pressIndent = 0; if (_pressed) { pressIndent = UISettings.CalcPix(1); } //if (_dropShadow && !_pressed) if (_dropShadow) { 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.ExtTextOut(clipRect.Left + UISettings.CalcPix(22 + 5), clipRect.Top + topAdjust + UISettings.CalcPix(1) + pressIndent, textSize.Width, Text); } graphics.TextColor = color; //graphics.ExtTextOut(clipRect.Left + (clipRect.Width - textSize.Width) / 2, clipRect.Top + topAdjust, textSize.Width, Text); graphics.ExtTextOut(clipRect.Left + UISettings.CalcPix(22 + 5), clipRect.Top + topAdjust + pressIndent, 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 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); } }
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]); }
public override void DrawItemOn(Gdi g, Rectangle rItem) { int y = (rItem.Height - _imageSize.Height) / 2; g.Font = Font; if (_selectButton != null) g.DrawImageAlphaChannel(_selectButton, rItem.Right - _imageSize.Width - UISettings.CalcPix(15), rItem.Top + y); g.TextColor = Color.FromArgb(51, 153, 255); var textSize = g.GetTextExtent((string)DataSource.OptionValue); y = (rItem.Height - textSize.Height) / 2; int x = rItem.Width - UISettings.CalcPix(20) - _imageSize.Width; if (textSize.Width < x) x = textSize.Width; g.DrawText((string)DataSource.OptionValue, new Win32.RECT(rItem.Right - UISettings.CalcPix(20) - _imageSize.Width - x, rItem.Top + y, x, textSize.Height), Win32.DT.LEFT | Win32.DT.TOP | Win32.DT.WORDBREAK | Win32.DT.SINGLELINE); }
protected override void OnRender(Gdi graphics, Rectangle clipRect) { if (_leftBorder != null && _rightBorder != null && _topBorder != null && _bottomBorder != null) { Rectangle rect = new Rectangle(clipRect.Left + _leftBorderSize.Width, clipRect.Top + _topBorderSize.Height, clipRect.Width - _leftBorderSize.Width - _rightBorderSize.Width, _leftBorderSize.Height - _topBorderSize.Height - _bottomBorderSize.Height); if (_leftBorder != null) graphics.DrawImageAlphaChannel(_leftBorder, clipRect.Left, clipRect.Top); if (_rightBorder != null) graphics.DrawImageAlphaChannel(_rightBorder, rect.Right, clipRect.Top); if (_topBorder != null) graphics.DrawImageAlphaChannel(_topBorder, new Rectangle(rect.Left, clipRect.Top, rect.Width, _topBorderSize.Height)); if (_bottomBorder != null) graphics.DrawImageAlphaChannel(_bottomBorder, new Rectangle(rect.Left, rect.Bottom, rect.Width, _topBorderSize.Height)); if (BackColor != Color.Empty) graphics.FillRect(rect, BackColor); } else { //if (BackColor != Color.Empty) // graphics.FillRect(clipRect, BackColor); } if (_textbox.Visible) { // } else { _label.Render(graphics, clipRect); } }