/// <summary>
        /// Entry point for re-drawing based on updated portrait.
        /// </summary>
        private void drawPortrait()
        {
            Graphics g = Graphics.FromImage(previewImage);

            logger.Debug("Clearing preview.");
            g.Clear(Color.Empty);

            try {
                Bitmap portraitImage = portraitRenderer.DrawPortrait(portrait, loader.GetActiveContents(), loader.GetActivePortraitData().Sprites);
                g.DrawImage(portraitImage, 0, 0);
            } catch (Exception e) {
                logger.Error("Error encountered rendering portrait", e);
                return;
            }

            pbPortrait.Image = previewImage;
        }
Exemple #2
0
        /// <summary>
        /// Entry point for re-drawing based on updated portrait.
        /// </summary>
        private void drawPortrait()
        {
            pbPortrait.Image?.Dispose();

            try
            {
                var steps = PortraitBuilder.Engine.PortraitBuilder.BuildCharacter(character, loader.ActivePortraitData.Sprites)
                            .Where(step => step != null)
                            .Select(step =>
                {
                    step.Tile = loader.Cache.Get(step.Def)[step.TileIndex];
                    return(step);
                });

                var rendered = PortraitRenderer.DrawPortrait(steps);
                previewImage = SKImage.FromBitmap(rendered);
            }
            catch (Exception e)
            {
                logger.LogError("Error encountered rendering portrait", e);
                return;
            }

            pbPortrait.Image = Image.FromStream(previewImage.Encode().AsStream(true));

            if (!this.Visible)
            {
                return;
            }

            var fullUrl = GetOnlinePortraitUrl();

            logger.LogInformation("Rendering remote portrait: " + fullUrl);
            lnkLblRemotePortrait.Text      = fullUrl;
            pbPortraitOnline.ImageLocation = fullUrl;
        }