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