protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
        {
            if (this.EnsureRenderer())
            {
                Rectangle bgRect = this.GetBackgroundRectangle(e.Item);
                bgRect.Width = bgRect.Height;

                // Now, mirror its position if the menu item is RTL.
                if (e.Item.RightToLeft == RightToLeft.Yes)
                    bgRect = new Rectangle(e.ToolStrip.ClientSize.Width - bgRect.X - bgRect.Width, bgRect.Y, bgRect.Width, bgRect.Height);

                this.Renderer.SetParameters(this.MenuClass, (int)MenuParts.PopupCheckBackground, e.Item.Enabled ? (int)MenuPopupCheckBackgroundStates.Normal : (int)MenuPopupCheckBackgroundStates.Disabled);
                this.Renderer.DrawBackground(e.Graphics, bgRect);

                Rectangle checkRect = e.ImageRectangle;
                checkRect.X = bgRect.X + bgRect.Width / 2 - checkRect.Width / 2;
                checkRect.Y = bgRect.Y + bgRect.Height / 2 - checkRect.Height / 2;
           
                // I don't think ToolStrip even supports radio box items, so no need to render them.
                var item = e.Item as ToolStripMenuItem;

                if (item.CheckState == CheckState.Indeterminate)
                {
                    this.Renderer.SetParameters(this.MenuClass, (int)MenuParts.PopupCheck, e.Item.Enabled ? (int)MenuPopupCheckStates.BulletNormal : (int)MenuPopupCheckStates.BulletDisabled);
                }
                else
                {
                    this.Renderer.SetParameters(this.MenuClass, (int)MenuParts.PopupCheck, e.Item.Enabled ? (int)MenuPopupCheckStates.CheckmarkNormal : (int)MenuPopupCheckStates.CheckmarkDisabled);
                }

                this.Renderer.DrawBackground(e.Graphics, checkRect);
            }
            else
            {
                base.OnRenderItemCheck(e);
            }
        }
示例#2
0
 protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e)
 {
     if (PaintItemImage != null)
     {
         PaintItemImage(this, e);
     }
 }
 public void DrawItemImage(ToolStripItemImageRenderEventArgs e)
 {
 }
示例#4
0
 protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e)
 {
     this.renderer.DrawItemImage(e);
 }
示例#5
0
    private void Renderer_PaintItemImage(object sender, ToolStripItemImageRenderEventArgs e)
    {
        G = e.Graphics;

        G.DrawImage(e.Image, new Rectangle(4, 1, 16, 16));
    }
        protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
        {
            //base.OnRenderItemCheck(e);

            e.Graphics.DrawImage(ModernForms.Properties.Resources.check, e.ImageRectangle);
        }
 protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e)
 {
     base.OnRenderItemImage(e);
 }
示例#8
0
        /// <summary>
        /// Raises the RenderItemImage event.
        /// </summary>
        /// <param name="e">An ToolStripItemImageRenderEventArgs containing the event data.</param>
        protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e)
        {
            // Is this a min/restore/close pendant button
            if (e.Item.GetType().ToString() == "System.Windows.Forms.MdiControlStrip+ControlBoxMenuItem")
            {
                // Get access to the owning form of the mdi control strip
                Form f = e.ToolStrip.Parent.TopLevelControl as Form;
                if (f != null)
                {
                    // Get the mdi control strip instance
                    PropertyInfo piMCS = typeof(Form).GetProperty("MdiControlStrip", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                    if (piMCS != null)
                    {
                        object mcs = piMCS.GetValue(f, null);
                        if (mcs != null)
                        {
                            // Get the min/restore/close internal menu items
                            Type      mcsType = mcs.GetType();
                            FieldInfo fiM     = mcsType.GetField("minimize", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                            FieldInfo fiR     = mcsType.GetField("restore", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                            FieldInfo fiC     = mcsType.GetField("close", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                            if ((fiM != null) && (fiR != null) && (fiC != null))
                            {
                                ToolStripMenuItem m = fiM.GetValue(mcs) as ToolStripMenuItem;
                                ToolStripMenuItem r = fiR.GetValue(mcs) as ToolStripMenuItem;
                                ToolStripMenuItem c = fiC.GetValue(mcs) as ToolStripMenuItem;
                                if ((m != null) && (r != null) && (c != null))
                                {
                                    // Compare the event provided image with the internal cached ones to discover the type of pendant button we are drawing
                                    PaletteButtonSpecStyle specStyle = PaletteButtonSpecStyle.Generic;
                                    if (m.Image == e.Image)
                                    {
                                        specStyle = PaletteButtonSpecStyle.PendantMin;
                                    }
                                    else if (r.Image == e.Image)
                                    {
                                        specStyle = PaletteButtonSpecStyle.PendantRestore;
                                    }
                                    else if (c.Image == e.Image)
                                    {
                                        specStyle = PaletteButtonSpecStyle.PendantClose;
                                    }

                                    // A match, means we have a known pendant button
                                    if (specStyle != PaletteButtonSpecStyle.Generic)
                                    {
                                        // Grab the palette pendant details needed for drawing
                                        Image paletteImage     = KCT.Palette.GetButtonSpecImage(specStyle, PaletteState.Normal);
                                        Color transparentColor = KCT.Palette.GetButtonSpecImageTransparentColor(specStyle);

                                        // Finally we actually have an image to draw!
                                        if (paletteImage != null)
                                        {
                                            using (ImageAttributes attribs = new ImageAttributes())
                                            {
                                                // Setup mapping to make required color transparent
                                                ColorMap remap = new ColorMap();
                                                remap.OldColor = transparentColor;
                                                remap.NewColor = Color.Transparent;
                                                attribs.SetRemapTable(new ColorMap[] { remap });

                                                // Phew, actually draw the darn thing
                                                e.Graphics.DrawImage(paletteImage, e.ImageRectangle,
                                                                     0, 0, e.Image.Width, e.Image.Height,
                                                                     GraphicsUnit.Pixel, attribs);

                                                // Do not let base class draw system defined image
                                                return;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            base.OnRenderItemImage(e);
        }
        /// <summary>
        /// 选中项
        /// </summary>
        /// <param name="e"></param>
        protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
        {
            Image check = AssemblyHelper.GetImage("QQ.ContextMenu.menu_check.png");

            e.Graphics.DrawImage(check, e.ImageRectangle);
        }
示例#10
0
 protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
 {
     _renderer.DrawItemCheck(e);
 }
示例#11
0
        protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
        {
            if (MonoWorkarounds.IsRequired())
            {
                base.OnRenderItemCheck(e);
                return;
            }

            Image imgToDispose = null;

            try
            {
                Graphics      g      = e.Graphics;
                Image         imgOrg = e.Image;
                Rectangle     rOrg   = e.ImageRectangle;
                ToolStripItem tsi    = e.Item;

                Image     img = imgOrg;
                Rectangle r   = rOrg;
                Debug.Assert(r.Width == r.Height);
                Debug.Assert(DpiUtil.ScalingRequired || (r.Size ==
                                                         ((img != null) ? img.Size : new Size(3, 5))));

                // Override the .NET checkmark bitmap
                ToolStripMenuItem tsmi = (tsi as ToolStripMenuItem);
                if ((tsmi != null) && tsmi.Checked && (tsmi.Image == null))
                {
                    img = Properties.Resources.B16x16_MenuCheck;
                }

                if (tsi != null)
                {
                    Rectangle rContent = tsi.ContentRectangle;
                    Debug.Assert(rContent.Contains(r) || DpiUtil.ScalingRequired);
                    r.Intersect(rContent);
                    if (r.Height < r.Width)
                    {
                        r.Width = r.Height;
                    }
                }
                else
                {
                    Debug.Assert(false);
                }

                if ((img != null) && (r.Size != img.Size))
                {
                    img = GfxUtil.ScaleImage(img, r.Width, r.Height,
                                             ScaleTransformFlags.UIIcon);
                    imgToDispose = img;
                }

                if ((img != imgOrg) || (r != rOrg))
                {
                    ToolStripItemImageRenderEventArgs eNew =
                        new ToolStripItemImageRenderEventArgs(g, tsi, img, r);
                    base.OnRenderItemCheck(eNew);
                    return;
                }

                /* ToolStripMenuItem tsmi = (tsi as ToolStripMenuItem);
                 * if((tsmi != null) && tsmi.Checked && (r.Width > 0) &&
                 *      (r.Height > 0) && (img != null) &&
                 *      ((img.Width != r.Width) || (img.Height != r.Height)))
                 * {
                 *      Rectangle rContent = tsmi.ContentRectangle;
                 *      r.Intersect(rContent);
                 *      if(r.Height < r.Width)
                 *              r.Width = r.Height;
                 *
                 *      ProfessionalColorTable ct = this.ColorTable;
                 *
                 *      Color clrBorder = ct.ButtonSelectedBorder;
                 *
                 *      Color clrBG = ct.CheckBackground;
                 *      if(tsmi.Selected) clrBG = ct.CheckSelectedBackground;
                 *      if(tsmi.Pressed) clrBG = ct.CheckPressedBackground;
                 *
                 *      Color clrFG = ((UIUtil.ColorToGrayscale(clrBG).R >= 128) ?
                 *              Color.Black : Color.White);
                 *
                 *      using(SolidBrush sb = new SolidBrush(clrBG))
                 *      {
                 *              g.FillRectangle(sb, r);
                 *      }
                 *      using(Pen p = new Pen(clrBorder))
                 *      {
                 *              g.DrawRectangle(p, r.X, r.Y, r.Width - 1, r.Height - 1);
                 *      }
                 *
                 *      ControlPaint.DrawMenuGlyph(g, r, MenuGlyph.Checkmark,
                 *              clrFG, Color.Transparent);
                 *
                 *      // if((img.Width == r.Width) && (img.Height == r.Height))
                 *      //	g.DrawImage(img, r);
                 *      // else
                 *      // {
                 *      //	Image imgScaled = GfxUtil.ScaleImage(img,
                 *      //		r.Width, r.Height, ScaleTransformFlags.UIIcon);
                 *      //	g.DrawImage(imgScaled, r);
                 *      //	imgScaled.Dispose();
                 *      // }
                 *
                 *      return;
                 * } */

                /* if((img != null) && (r.Width > 0) && (r.Height > 0) &&
                 *      ((img.Width != r.Width) || (img.Height != r.Height)) &&
                 *      (tsi != null))
                 * {
                 *      // This should only happen on high DPI
                 *      Debug.Assert(DpiUtil.ScalingRequired);
                 *
                 *      Image imgScaled = GfxUtil.ScaleImage(img,
                 *              r.Width, r.Height, ScaleTransformFlags.UIIcon);
                 *      // Image imgScaled = new Bitmap(r.Width, r.Height,
                 *      //	PixelFormat.Format32bppArgb);
                 *      // using(Graphics gScaled = Graphics.FromImage(imgScaled))
                 *      // {
                 *      //	gScaled.Clear(Color.Transparent);
                 *
                 *      //	Color clrFG = ((UIUtil.ColorToGrayscale(
                 *      //		this.ColorTable.CheckBackground).R >= 128) ?
                 *      //		Color.FromArgb(18, 24, 163) : Color.White);
                 *
                 *      //	Rectangle rGlyph = new Rectangle(0, 0, r.Width, r.Height);
                 *      //	// rGlyph.Inflate(-r.Width / 12, -r.Height / 12);
                 *
                 *      //	ControlPaint.DrawMenuGlyph(gScaled, rGlyph,
                 *      //		MenuGlyph.Bullet, clrFG, Color.Transparent);
                 *      // }
                 *
                 *      ToolStripItemImageRenderEventArgs eMod =
                 *              new ToolStripItemImageRenderEventArgs(g, e.Item,
                 *                      imgScaled, r);
                 *      base.OnRenderItemCheck(eMod);
                 *
                 *      imgScaled.Dispose();
                 *      return;
                 * } */
            }
            catch (Exception) { Debug.Assert(false); }
            finally
            {
                if (imgToDispose != null)
                {
                    imgToDispose.Dispose();
                }
            }

            base.OnRenderItemCheck(e);             // Not in 'finally', see 'eNew'
        }
示例#12
0
 protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
 {
     e.Graphics.DrawImage(Properties.Resources.sui_ticked, new Rectangle(8, 2, 20, 20));
 }
        protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
        {
            ToolStrip toolStrip     = e.ToolStrip;
            var       isHeadControl = false;

            if (toolStrip.Tag != null && toolStrip.Tag.ToString().Contains("$"))
            {
                isHeadControl = true;
            }

            Graphics graphics = e.Graphics;

            if (toolStrip is ToolStripDropDown && e.Item is ToolStripMenuItem)
            {
                bool      drawLogo     = DrawLogo(toolStrip);
                int       offsetMargin = drawLogo ? OffsetMargin : 0;
                Rectangle rect         = e.ImageRectangle;

                if (e.Item.RightToLeft == RightToLeft.Yes)
                {
                    rect.X -= offsetMargin + 2;
                }
                else
                {
                    rect.X += offsetMargin + 2;
                }

                rect.Width   = 13;
                rect.Y      += 1;
                rect.Height -= 3;

                using (SmoothingModeGraphics sg = new SmoothingModeGraphics(graphics))
                {
                    using (GraphicsPath path = new GraphicsPath())
                    {
                        path.AddRectangle(rect);
                        using (PathGradientBrush brush = new PathGradientBrush(path))
                        {
                            brush.CenterColor    = StyleSet.ToolStripDropDownPressedCenterColor;
                            brush.CenterColor    = Color.Red;
                            brush.SurroundColors = new Color[] { isHeadControl?StyleSet.HeadToolStripItemPressedBackColor : StyleSet.ControlPressedBackColor };
                            Blend blend = new Blend();
                            blend.Positions = new float[] { 0f, 0.3f, 1f };
                            blend.Factors   = new float[] { 0f, 0.5f, 1f };
                            brush.Blend     = blend;
                            graphics.FillRectangle(brush, rect);
                        }
                    }

                    using (Pen pen = new Pen(StyleSet.HeadToolStripItemPressedBackColor))
                    {
                        graphics.DrawRectangle(pen, rect);
                    }

                    GraphicsHelper.DrawHollowwRectangle(graphics, rect, isHeadControl ? StyleSet.HeadToolStripItemCheckedBorderColor : StyleSet.ControlCheckedBorderColor);
                }
            }
            else
            {
                base.OnRenderItemCheck(e);
            }
        }
示例#14
0
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// toolstripitemimagerendereventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this ToolStripItemImageRenderEventHandler toolstripitemimagerendereventhandler, Object sender, ToolStripItemImageRenderEventArgs e, AsyncCallback callback)
        {
            if (toolstripitemimagerendereventhandler == null)
            {
                throw new ArgumentNullException("toolstripitemimagerendereventhandler");
            }

            return(toolstripitemimagerendereventhandler.BeginInvoke(sender, e, callback, null));
        }