Wie man einen Screenshot mit Openentk machtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie man einen Screenshot mit Openentk macht

Post by Anonymous »

Ich bin hierher gekommen, wie man das Bild mit OpenTK erfasst. Erstens habe ich im Beispiel keinen Zugriff auf das Objekt "Glcontrol1". Mein Hauptfenster erbt von opentk.windowing.desktop.gameWindow. Als nächstes scheint das Bild, das ich bekomme, wirklich verschwommen zu sein und hat Bilder horizontal wiederholt. Schließlich kann ich nicht auf alle Mitglieder und Felder zugreifen, die das Beispiel verwendete, also habe ich sie anders extrahiert und ich bin mir nicht sicher, ob sie gleich sind oder nicht. < /P>
Hier ist meine Version von "takescreenshot ()" ", aber ich habe nicht ihre Lösung von" glrefresh () "< /p>

Code: Select all

public Bitmap TakeScreenshot()
{
if (this.Context == null)
throw new Exception("the \"Context\" was null ");
int w = Size.X;
int h = Size.Y;

Box2i boxFromGameWindow = this.ClientRectangle;

Vector2i bottomCoordinate = boxFromGameWindow.Min;
Vector2i topCoordinate = boxFromGameWindow.Max;
Vector2i sizeOfWindowVector = boxFromGameWindow.Size;
Point topLeftPoint = new Point(bottomCoordinate[0], topCoordinate[1]);
Size sizeOfWindow = new Size(sizeOfWindowVector[0], sizeOfWindowVector[1]);

Rectangle convertedRectangle = new Rectangle(0, 0, sizeOfWindowVector[0], sizeOfWindowVector[1]);

Bitmap bmp = new Bitmap(sizeOfWindowVector[0], sizeOfWindowVector[1]);
System.Drawing.Imaging.BitmapData data =
bmp.LockBits(convertedRectangle, System.Drawing.Imaging.ImageLockMode.WriteOnly, bmp.PixelFormat);

GL.ReadPixels(0, 0,   sizeOfWindowVector[0], sizeOfWindowVector[1], PixelFormat.Rgb, PixelType.UnsignedByte, data.Scan0);
bmp.UnlockBits(data);

bmp.RotateFlip(RotateFlipType.RotateNoneFlipY);

return bmp;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post