Visual Studio C++ .NET WinForms에서 Opengl 화면을 클립보드로 보내기

void ScreenShotToClipboard()
{

int windowWidth = v3d->GetCamera().width();   
  int windowHeight = v3d->GetCamera().height();

  Bitmap ^bitmap = gcnew Bitmap(windowWidth, windowHeight);
  System::Drawing::Imaging::BitmapData ^data = bitmap->LockBits(System::Drawing::Rectangle(0, 0, windowWidth, windowHeight),
   System::Drawing::Imaging::ImageLockMode::WriteOnly, System::Drawing::Imaging::PixelFormat::Format24bppRgb);  
  glReadPixels(0, 0, windowWidth, windowHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, data->Scan0.ToPointer());
  glFinish();
  bitmap->UnlockBits(data);

  bitmap->RotateFlip(RotateFlipType::RotateNoneFlipY);
// 주석을 해제하면 파일로도 쓴다.
  //bitmap->Save("aa.bmp");
  System::Windows::Forms::Clipboard::Clear();
  System::Windows::Forms::Clipboard::SetImage(bitmap);
}
// 클립보드에서 그림을 읽어올때는 다음처럼 한다.

DataFormats::Format ^imageSample = DataFormats::GetFormat(DataFormats::Bitmap);

// 이미지로 만들고 싶으면 다음처럼

System::Drawing::Bitmap ^b = gcnew System::Drawing::Bitmap(width, height);
System::Drawing::Graphics ^g = System::Drawing::Graphics::FromImage(b);

재밌다 ^^