示例#1
0
 protected override void OnRender(DrawingContext drawingContext)
 {
     if (RenderSize.Width == 0 || RenderSize.Height == 0)
     {
         return;
     }
     if (_isVertical)
     {
         DrawingContextUtil.DrawLine(drawingContext, _pen, new Point(0, 0), new Point(0, RenderSize.Height));
     }
     else
     {
         DrawingContextUtil.DrawLine(drawingContext, _pen, new Point(0, 0), new Point(RenderSize.Width, 0));
     }
 }
示例#2
0
        private void OnSectionsListBoxDrawItem(object sender, DrawItemEventArgs e)
        {
            SettingsDialogSection section = this.sectionsListBox.Items[e.Index] as SettingsDialogSection;
            int x = UIUtil.ScaleWidth(4);

            using (IDrawingContext context = DrawingContextUtil.FromGraphics(e.Graphics, e.Bounds, false, FactorySource.PerThread))
            {
                HighlightState disabled;
                context.Clear(new ColorRgba128Float?(this.BackColor));
                if (e.State.HasFlag(DrawItemState.Disabled) || e.State.HasFlag(DrawItemState.Grayed))
                {
                    disabled = HighlightState.Disabled;
                }
                else if (e.State.HasFlag(DrawItemState.Selected))
                {
                    disabled = HighlightState.Checked;
                }
                else if (e.State.HasFlag(DrawItemState.HotLight) || (e.Index == this.hotTrackIndex))
                {
                    disabled = HighlightState.Hover;
                }
                else
                {
                    disabled = HighlightState.Default;
                }
                RectInt32 bounds = e.Bounds.ToRectInt32();
                bounds.Inflate(-1, -1);
                this.selectionHighlightRenderer.HighlightState = disabled;
                this.selectionHighlightRenderer.RenderBackground(context, bounds);
                SizeInt32 num4 = UIUtil.ScaleSize(section.DeviceIcon.PixelSize);
                RectInt32 num5 = new RectInt32(x, e.Bounds.Top + ((e.Bounds.Height - num4.Height) / 2), num4.Width, num4.Height);
                context.DrawBitmap(section.DeviceIcon, new RectDouble?(num5), 1.0, BitmapInterpolationMode.Linear, null);
                HotkeyRenderMode hotkeyRenderMode       = !e.State.HasFlag(DrawItemState.NoAccelerator) ? HotkeyRenderMode.Show : HotkeyRenderMode.Hide;
                TextLayout       resourceSource         = UIText.CreateLayout(context, section.DisplayName, e.Font, null, hotkeyRenderMode, 65535.0, 65535.0);
                ITextLayout      cachedOrCreateResource = context.GetCachedOrCreateResource <ITextLayout>(resourceSource);
                int   num6 = num5.Right + x;
                float num7 = e.Bounds.Top + ((e.Bounds.Height - cachedOrCreateResource.Metrics.Height) / 2f);
                context.DrawTextLayout((double)num6, (double)num7, resourceSource, this.selectionHighlightRenderer.EmbeddedTextBrush, DrawTextOptions.None);
                if (!e.State.HasFlag(DrawItemState.NoFocusRect))
                {
                    context.DrawFocusRectangle(e.Bounds.ToRectFloat());
                }
            }
        }
示例#3
0
 private void OnComboBoxDrawItem(object sender, DrawItemEventArgs e)
 {
     if (e.Index != -1)
     {
         RectInt32 rect = e.Bounds.ToRectInt32();
         using (IDrawingContext context = DrawingContextUtil.FromGraphics(e.Graphics, rect, false, FactorySource.PerThread))
         {
             using (context.UseTranslateTransform((float)e.Bounds.X, (float)e.Bounds.Y, MatrixMultiplyOrder.Prepend))
             {
                 HighlightState hover;
                 RectInt32      num2 = new RectInt32(0, 0, rect.Width, rect.Height);
                 Item           item = (Item)this.comboBox.Items[e.Index];
                 if ((e.State & DrawItemState.Selected) > DrawItemState.None)
                 {
                     hover = HighlightState.Hover;
                 }
                 else
                 {
                     hover = HighlightState.Default;
                 }
                 Color embeddedTextColor = SelectionHighlight.GetEmbeddedTextColor(hover);
                 context.FillRectangle(num2, PaintDotNet.UI.Media.SystemBrushes.Window);
                 this.selectionHighlightRenderer.HighlightState = hover;
                 this.selectionHighlightRenderer.RenderBackground(context, num2);
                 int extent = 0;
                 if ((item.Image != null) && (item.Image.PixelFormat != System.Drawing.Imaging.PixelFormat.Undefined))
                 {
                     extent = this.dropShadowRenderer.GetRecommendedExtent(item.Image.Size.ToSizeInt32());
                     RectInt32 num4 = new RectInt32((this.imageXInset + extent) + ((this.maxImageSize.Width - item.Image.Width) / 2), (this.imageYInset + extent) + ((this.maxImageSize.Height - item.Image.Height) / 2), item.Image.Width, item.Image.Height);
                     context.DrawBitmap(item.DeviceImage, new RectDouble?(num4), 1.0, BitmapInterpolationMode.Linear, null);
                     this.dropShadowRenderer.RenderOutside(context, num4, extent);
                 }
                 TextLayout  resourceSource         = UIText.CreateLayout(context, item.Name, this.Font, null, HotkeyRenderMode.Ignore, (double)e.Bounds.Width, (double)e.Bounds.Height);
                 ITextLayout cachedOrCreateResource = context.GetCachedOrCreateResource <ITextLayout>(resourceSource);
                 int         num5 = ((((this.imageXInset + extent) + this.maxImageSize.Width) + extent) + this.imageXInset) + this.textLeftMargin;
                 int         num6 = (this.itemSize.Height - ((int)cachedOrCreateResource.Metrics.Height)) / 2;
                 context.DrawTextLayout((double)num5, (double)num6, resourceSource, this.selectionHighlightRenderer.EmbeddedTextBrush, DrawTextOptions.None);
             }
         }
     }
 }
示例#4
0
        private void DrawComboBoxItem(DrawItemEventArgs e)
        {
            HighlightState hover;
            string         fontName = (string)base.ComboBox.Items[e.Index];
            bool           flag     = (e.State & DrawItemState.Selected) > DrawItemState.None;
            bool           flag2    = this.hasBeenShown && (e.Bounds.Width >= (base.ComboBox.DropDownWidth / 2));

            if (!flag2)
            {
                hover = HighlightState.Default;
            }
            else if (flag)
            {
                hover = HighlightState.Hover;
            }
            else
            {
                hover = HighlightState.Default;
            }
            Color selectionBackColor = SelectionHighlight.GetSelectionBackColor(hover);
            int   num  = UIUtil.ScaleWidth(3);
            int   num2 = num;
            int   num3 = -1;

            this.selectionHighlightRenderer.HighlightState = hover;
            using (IDrawingContext context = DrawingContextUtil.FromGraphics(e.Graphics, e.Bounds, false, FactorySource.PerThread))
            {
                RenderLayer layer = new RenderLayer();
                context.Clear(new ColorRgba128Float?((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.Window));
                this.selectionHighlightRenderer.RenderBackground(context, e.Bounds.ToRectFloat());
                SizedFontProperties        menu      = this.systemFonts.Menu;
                PaintDotNet.UI.Media.Brush textBrush = this.selectionHighlightRenderer.EmbeddedTextBrush;
                TextLayout textLayout = UIText.CreateLayout(context, fontName, menu, null, HotkeyRenderMode.Ignore, (double)(e.Bounds.Width - num2), (double)e.Bounds.Height);
                textLayout.ParagraphAlignment = ParagraphAlignment.Center;
                textLayout.WordWrapping       = WordWrapping.NoWrap;
                int num5 = num + e.Bounds.X;
                context.DrawTextLayout((double)num5, (double)(e.Bounds.Y + num3), textLayout, textBrush, DrawTextOptions.None);
                ITextLayout  cachedOrCreateResource = context.GetCachedOrCreateResource <ITextLayout>(textLayout);
                int          num4   = (int)Math.Ceiling((double)(num5 + cachedOrCreateResource.Metrics.WidthMax));
                PlacedBitmap bitmap = this.TryGetFontPreview(fontName, 16f, textBrush);
                if (bitmap == null)
                {
                    IntPtr listHwnd = UIUtil.GetListBoxHwnd(base.ComboBox);
                    Action callback = delegate {
                        try
                        {
                            PlacedBitmap bitmap = this.GetOrCreateFontPreview(fontName, 16f, textBrush);
                            if (listHwnd != IntPtr.Zero)
                            {
                                this.ComboBox.BeginInvoke(() => UIUtil.InvalidateHwnd(listHwnd));
                            }
                        }
                        catch (Exception)
                        {
                        }
                    };
                    if (this.backgroundThread == null)
                    {
                        this.backgroundThread = new ThreadDispatcher(ApartmentState.MTA);
                    }
                    this.backgroundThread.Enqueue(QueueSide.Front, callback).Observe();
                }
                if (flag2 && (bitmap != null))
                {
                    PaintDotNet.UI.Media.Brush brush;
                    RectFloat num7;
                    RectFloat num6 = new RectFloat((float)((e.Bounds.Right - num) - bitmap.Bitmap.Size.Width), num3 + ((float)Math.Floor((double)((e.Bounds.Y + ((e.Bounds.Height - bitmap.LayoutRect.Height) / 2.0)) - bitmap.LayoutRect.Top))), (float)bitmap.Bitmap.Size.Width, (float)bitmap.Bitmap.Size.Height);
                    if (num6.Left > num4)
                    {
                        num7  = num6;
                        brush = null;
                    }
                    else
                    {
                        num7    = num6;
                        num7.X += num4 - num6.X;
                        num7.X  = (float)Math.Ceiling((double)num7.X);
                        LinearGradientBrush brush2 = new LinearGradientBrush {
                            ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation,
                            SpreadMethod           = GradientSpreadMethod.Pad
                        };
                        brush2.GradientStops.Add(new GradientStop(Color.White, 0.0));
                        brush2.GradientStops.Add(new GradientStop(Color.White, ((double)(e.Bounds.Width - UIUtil.ScaleWidth(0x18))) / ((double)e.Bounds.Width)));
                        brush2.GradientStops.Add(new GradientStop(Color.Transparent, 1.0));
                        brush2.EndPoint = new PointDouble((double)e.Bounds.Width, 0.0);
                        brush           = brush2;
                    }
                    using (context.CreateLayer(null))
                    {
                        context.PushLayer(layer, new RectDouble?(num7), null, AntialiasMode.Aliased, new Matrix3x2Double?(Matrix3x2Float.Identity), 1.0, brush, LayerOptions.None);
                        context.DrawBitmap(bitmap.DeviceBitmap, new RectDouble?(num7), 1.0, BitmapInterpolationMode.Linear, null);
                        context.PopLayer();
                    }
                }
            }
        }
示例#5
0
 protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
 {
     if (!string.IsNullOrWhiteSpace(e.Text))
     {
         int       num;
         Rectangle textRectangle = e.TextRectangle;
         Rectangle rect          = textRectangle;
         if ((e.TextFormat & (TextFormatFlags.Right | TextFormatFlags.HorizontalCenter)) == TextFormatFlags.Default)
         {
             num = 10;
         }
         else
         {
             num = 0;
         }
         rect.Width += num;
         using (IDrawingContext context = DrawingContextUtil.FromGraphics(e.Graphics, rect, false, FactorySource.PerThread))
         {
             HotkeyRenderMode ignore;
             Color            c      = (ThemeConfig.EffectiveTheme == PdnTheme.Aero) ? this.AeroColorTheme.MenuTextColor : e.Item.ForeColor;
             Color            color2 = e.Item.Enabled ? c : DisabledRendering.GetDisabledColor(c);
             this.textBrush.Color = color2;
             if ((e.TextFormat & TextFormatFlags.NoPrefix) == TextFormatFlags.NoPrefix)
             {
                 ignore = HotkeyRenderMode.Ignore;
             }
             else if ((e.TextFormat & TextFormatFlags.HidePrefix) == TextFormatFlags.HidePrefix)
             {
                 ignore = HotkeyRenderMode.Hide;
             }
             else
             {
                 ignore = HotkeyRenderMode.Show;
             }
             TextLayout textLayout = UIText.CreateLayout(context, e.Text, e.TextFont, null, ignore, (double)textRectangle.Width, (double)textRectangle.Height);
             if ((e.TextFormat & TextFormatFlags.Right) == TextFormatFlags.Right)
             {
                 textLayout.TextAlignment = PaintDotNet.DirectWrite.TextAlignment.Trailing;
             }
             else if ((e.TextFormat & TextFormatFlags.HorizontalCenter) == TextFormatFlags.HorizontalCenter)
             {
                 textLayout.TextAlignment = PaintDotNet.DirectWrite.TextAlignment.Center;
             }
             if ((e.TextFormat & TextFormatFlags.Bottom) == TextFormatFlags.Bottom)
             {
                 textLayout.ParagraphAlignment = ParagraphAlignment.Far;
             }
             else if ((e.TextFormat & TextFormatFlags.VerticalCenter) == TextFormatFlags.VerticalCenter)
             {
                 textLayout.ParagraphAlignment = ParagraphAlignment.Center;
             }
             textLayout.WordWrapping = WordWrapping.NoWrap;
             UIText.AdjustFontSizeToFitLayoutSize(context, textLayout, (double)textRectangle.Width, 65535.0, 0.6);
             if (e.Item is PdnToolStripStatusLabel)
             {
                 textLayout.TrimmingGranularity = TrimmingGranularity.Character;
                 textLayout.TrimmingStyle       = TextTrimmingStyle.Ellipsis;
             }
             context.DrawTextLayout((double)rect.X, (double)rect.Y, textLayout, this.textBrush, DrawTextOptions.None);
         }
     }
 }