Esempio n. 1
0
        public void PaintClose(PaintEventArgs e)
        {
            _closeRect = new RectangleF(
                e.ClipRectangle.Width - _owner.CaptionHeight - _owner.Padding.Right,
                _owner.Padding.Top,
                _owner.CaptionHeight,
                _owner.CaptionHeight);

            float wh = _closeRect.Width / _iconSizeProportion;

            RectangleF _innerIconRect = new RectangleF(_closeRect.X + ((_closeRect.Width - wh) / 2), _closeRect.Y + ((_closeRect.Height - wh) / 2), wh, wh);

            if (_closeHover)
            {
                using (SolidBrush brush = new SolidBrush(Color.FromArgb(32, 255, 255, 255)))
                {
                    e.Graphics.FillRectangle(brush, _closeRect);
                }
            }

            using (HightQualityGraphics g = new HightQualityGraphics(e.Graphics))
            {
                e.Graphics.DrawImage(Resources.close, _innerIconRect);
            }
        }
Esempio n. 2
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            e.Graphics.DrawImage(Resources.shadow, new Rectangle(0, 0, 512, 352));

            using (SolidBrush brush = new SolidBrush(Color.FromArgb(230, 56, 56, 56)))
            {
                e.Graphics.FillRectangle(brush, ClientArea);
            }

            if (_draging)
            {
                e.Graphics.DrawImage(Resources.drag, ClientArea);
            }

            e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
            using (SolidBrush brush = new SolidBrush(Color.White))
            {
                using (StringFormat sf = StringFormat.GenericDefault)
                {
                    sf.LineAlignment = StringAlignment.Center;
                    sf.Alignment     = StringAlignment.Center;
                    sf.FormatFlags   = StringFormatFlags.NoWrap;
                    sf.Trimming      = StringTrimming.EllipsisCharacter;
                    if (_files.Count <= 0)
                    {
                        e.Graphics.DrawString(Resources.Normal, Font, brush, ClientArea, sf);
                    }
                }
            }

            int _offsetY = 0;

            // graphics item
            for (int i = 0; i < _files.Count; i++)
            {
                NeteaseCrypto f = _files[i];

                RectangleF imgRect = new RectangleF(ClientArea.X, ClientArea.Y + _offsetY, ITEM_HEIGHT, ITEM_HEIGHT);

                float fpw = (ClientArea.Width - imgRect.Width) / 100f;

                RectangleF fillProgress = new RectangleF(imgRect.Right, ClientArea.Y + _offsetY, (float)f.Progress * fpw, ITEM_HEIGHT);

                RectangleF nameRect     = new RectangleF(imgRect.Right + 5, ClientArea.Y + _offsetY, ClientArea.Width / 2.8f, ITEM_HEIGHT);
                RectangleF artistRect   = new RectangleF(nameRect.Right, ClientArea.Y + _offsetY, nameRect.Width, ITEM_HEIGHT);
                RectangleF progressRect = new RectangleF(artistRect.Right, ClientArea.Y + _offsetY, ClientArea.Width - artistRect.Right, ITEM_HEIGHT);

                if (f.Cover != null)
                {
                    using (HightQualityGraphics _ = new HightQualityGraphics(e.Graphics))
                    {
                        e.Graphics.DrawImage(f.Cover, imgRect);
                    }
                }

                using (SolidBrush brush = new SolidBrush(Color.FromArgb(120, 0, 0, 0)))
                {
                    e.Graphics.FillRectangle(brush, fillProgress);
                }

                using (SolidBrush brush = new SolidBrush(Color.White))
                {
                    using (StringFormat sf = StringFormat.GenericTypographic)
                    {
                        sf.LineAlignment = StringAlignment.Center;
                        sf.FormatFlags   = StringFormatFlags.NoWrap;
                        sf.Trimming      = StringTrimming.EllipsisCharacter;

                        if (f.Name != null)
                        {
                            e.Graphics.DrawString(f.Name, Font, brush, nameRect, sf);
                        }
                        else
                        {
                            e.Graphics.DrawString("未知", Font, brush, nameRect, sf);
                        }

                        if (f.Artist != null)
                        {
                            e.Graphics.DrawString(String.Join("/", f.Artist), Font, brush, artistRect, sf);
                        }
                        else
                        {
                            e.Graphics.DrawString("未知", Font, brush, artistRect, sf);
                        }

                        e.Graphics.DrawString(string.Format("{0:F}%", f.Progress), Font, brush, progressRect, sf);
                    }
                }

                _offsetY += ITEM_HEIGHT;
            }
            e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault;
        }