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);
                }
            }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
                        }*/
        }
示例#4
0
文件: UIButton.cs 项目: xorkrus/vk_wm
        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);
            }
示例#7
0
        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);
            }
        }