Exemple #1
0
        private static void DrawSingleIcon(RowState state, Graphics g, int index,
                                           Rectangle rcCol, int midPointX, int midPointY)
        {
            if (index >= Core.ResourceIconManager.ImageList.Images.Count)
            {
                // possible on shutdown (OM-8972)
                return;
            }

            RectangleF rcClip = g.ClipBounds;

            rcClip.Intersect(new RectangleF(rcCol.Left, rcCol.Top, rcCol.Width, rcCol.Height));
            IntPtr hdc = g.GetHdc();

            try
            {
                IntPtr clipRgn = Win32Declarations.CreateRectRgn(0, 0, 0, 0);
                if (Win32Declarations.GetClipRgn(hdc, clipRgn) != 1)
                {
                    Win32Declarations.DeleteObject(clipRgn);
                    clipRgn = IntPtr.Zero;
                }
                Win32Declarations.IntersectClipRect(hdc, (int)rcClip.Left, (int)rcClip.Top,
                                                    (int)rcClip.Right, (int)rcClip.Bottom);

                int ildState = ((state & RowState.ActiveSelected) != 0)
                    ? Win32Declarations.ILD_SELECTED
                    : Win32Declarations.ILD_NORMAL;

                Win32Declarations.ImageList_Draw(Core.ResourceIconManager.ImageList.Handle,
                                                 index, hdc, midPointX - 8, midPointY - 8, ildState);

                Win32Declarations.SelectClipRgn(hdc, clipRgn);
                Win32Declarations.DeleteObject(clipRgn);
            }
            finally
            {
                g.ReleaseHdc(hdc);
            }
        }
Exemple #2
0
        protected override void DrawItem(Graphics g, Rectangle rc, object item, RowState state, string highlightText)
        {
            IResource res = item as IResource;

            if (res != null && res.GetLinksTo(null, TasksPlugin._linkTarget).Count > 0)
            {
                int midPointX = rc.Left + Width / 2;
                int midPointY = (rc.Top + rc.Bottom) / 2;

                RectangleF rcClip = g.ClipBounds;
                rcClip.Intersect(new RectangleF(rc.Left, rc.Top, rc.Width, rc.Height));
                IntPtr hdc = g.GetHdc();
                try
                {
                    IntPtr clipRgn = Win32Declarations.CreateRectRgn(0, 0, 0, 0);
                    if (Win32Declarations.GetClipRgn(hdc, clipRgn) != 1)
                    {
                        Win32Declarations.DeleteObject(clipRgn);
                        clipRgn = IntPtr.Zero;
                    }
                    Win32Declarations.IntersectClipRect(hdc, (int)rcClip.Left, (int)rcClip.Top,
                                                        (int)rcClip.Right, (int)rcClip.Bottom);

                    int ildState = ((state & RowState.ActiveSelected) != 0)
                        ? Win32Declarations.ILD_SELECTED : Win32Declarations.ILD_NORMAL;

                    Win32Declarations.ImageList_Draw(TasksPlugin._ImageList.Handle, 0, hdc,
                                                     midPointX - 8, midPointY - 8, ildState);

                    Win32Declarations.SelectClipRgn(hdc, clipRgn);
                    Win32Declarations.DeleteObject(clipRgn);
                }
                finally
                {
                    g.ReleaseHdc(hdc);
                }
            }
        }