Esempio n. 1
0
        private static byte[] ToMetafile(this Identicon icon)
        {
            var iconBounds = icon.GetIconBounds();

            using (var desktopGraphics = Graphics.FromHwnd(IntPtr.Zero))
            {
                var hdc = desktopGraphics.GetHdc();
                try
                {
                    using (var memoryStream = new MemoryStream())
                    {
                        using (var img = new Metafile(memoryStream, hdc,
                                                      new System.Drawing.Rectangle(0, 0, icon.Size, icon.Size), MetafileFrameUnit.Pixel,
                                                      EmfType.EmfPlusDual))
                        {
                            using (var graphics = Graphics.FromImage(img))
                            {
                                icon.Draw(graphics, iconBounds);
                            }
                        }

                        return(memoryStream.ToArray());
                    }
                }
                finally
                {
                    desktopGraphics.ReleaseHdc(hdc);
                }
            }
        }
Esempio n. 2
0
        private static string GenerateSvg(this Identicon icon, bool fragment)
        {
            var iconBounds = icon.GetIconBounds();
            var renderer   = new SvgRenderer(icon.Size, icon.Size);

            icon.Draw(renderer, iconBounds);
            return(renderer.ToSvg(fragment));
        }
Esempio n. 3
0
        /// <summary>
        /// Renders an <see cref="Identicon"/> as a WPF <see cref="Visual"/>.
        /// </summary>
        /// <param name="icon">The identicon to convert to a <see cref="Visual"/>.</param>
        public static Visual ToVisual(this Identicon icon)
        {
            var visual = new DrawingVisual();

            using (var context = visual.RenderOpen())
            {
                var iconBounds = icon.GetIconBounds();
                icon.Draw(context, iconBounds);
            }

            return(visual);
        }
Esempio n. 4
0
        private static byte[] GeneratePng(this Identicon icon)
        {
            var renderer   = new PngRenderer(icon.Size, icon.Size);
            var iconBounds = icon.GetIconBounds();

            icon.Draw(renderer, iconBounds);

            using (var memoryStream = new MemoryStream())
            {
                renderer.SavePng(memoryStream);
                return(memoryStream.ToArray());
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Renders an <see cref="Identicon"/> to a GDI <see cref="Bitmap"/>.
        /// </summary>
        /// <param name="icon">The identicon to render.</param>
        /// <remarks>
        /// The caller should dispose the returned <see cref="Bitmap"/> once it does not
        /// need it anymore.
        /// </remarks>
        public static Bitmap ToBitmap(this Identicon icon)
        {
            var iconBounds = icon.GetIconBounds();
            var img        = new Bitmap(icon.Size, icon.Size);

            try
            {
                using (var g = Graphics.FromImage(img))
                {
                    icon.Draw(g, iconBounds);
                }

                return(img);
            }
            catch
            {
                img.Dispose();
                throw;
            }
        }