From d98b7341e8445ba92a63e65e69b058d379cfbd94 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sat, 20 Jan 2024 17:07:47 +0100 Subject: [PATCH] SkinRenderer - Add GetThumbnail function --- .../Skins-And-Textures/CustomModelEditor.cs | 6 ++---- PCK-Studio/Rendering/SkinRenderer.cs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs b/PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs index 68ef0909..6414cb6d 100644 --- a/PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs +++ b/PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs @@ -229,16 +229,14 @@ namespace PckStudio.Forms } } - // Creates Model Data and Finalizes private void buttonDone_Click(object sender, EventArgs e) { foreach (var part in renderer3D1.ModelData) { _file.Properties.Add("BOX", part); } - var img = new Bitmap(renderer3D1.Size.Width, renderer3D1.Size.Height); - renderer3D1.DrawToBitmap(img, renderer3D1.Bounds); - _previewImage = img; + _previewImage = renderer3D1.GetThumbnail(); + DialogResult = DialogResult.OK; } diff --git a/PCK-Studio/Rendering/SkinRenderer.cs b/PCK-Studio/Rendering/SkinRenderer.cs index 3379010e..8482aa64 100644 --- a/PCK-Studio/Rendering/SkinRenderer.cs +++ b/PCK-Studio/Rendering/SkinRenderer.cs @@ -30,6 +30,7 @@ using PckStudio.Properties; using PckStudio.Forms.Editor; using System.Collections.ObjectModel; using System.Collections.Specialized; +using System.Drawing.Imaging; namespace PckStudio.Rendering { @@ -591,5 +592,22 @@ namespace PckStudio.Rendering OnANIMUpdate(); Refresh(); } + + /// + /// Captures the currently displayed frame + /// + /// Thumbnail of the cameras current view space + public Image GetThumbnail() + { + Bitmap bmp = new Bitmap(Width, Height); + BitmapData data = bmp.LockBits(ClientRectangle, ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); + + MakeCurrent(); + GL.Finish(); + GL.ReadPixels(0, 0, Width, Height, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); + bmp.UnlockBits(data); + bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); + return bmp; + } } } \ No newline at end of file