2015-07-03 46 views
0

我正在使用visual studio 2010,並且正在編寫一個代碼以捕獲單擊按鈕上的屏幕。我寫的代碼爲錯誤C3861圖形CopyFromScreen:標識符未找到

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
     try 
     { 
      SaveFileDialog^ save = gcnew SaveFileDialog(); 
      save->Title = "Save Screenshot"; 
      save->Filter = "JPEG | *.jpg | Bitmap | *.bmp | Portable Network Graphics|*.png|Graphical Interchange File Format|*.gif"; 
      save->ShowDialog(); 
      pictureBox1->Image->Save(save->FileName); 
     } 
     catch(Exception^ ex) 
     { 
     MessageBox::Show(ex->Message); 

     } 


    } 
private: System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) { 
     if(e->KeyCode == System::Windows::Forms::Keys::Enter) 
     { 
      Rectangle^ bounds; 
      System::Drawing::Bitmap^ screenshot; 
      Graphics^ graph; 
      bounds = Screen::PrimaryScreen->Bounds; 
      screenshot = gcnew System::Drawing::Bitmap(bounds->Width,bounds->Height, System::Drawing::Imaging::PixelFormat::Format32bppArgb); 
      graph = Graphics::FromImage(screenshot); 
      graph = CopyFromScreen (bounds->X, bounds->Y, 0, 0, bounds-> Size, CopyPixelOperation::SourceCopy); 
      pictureBox1->Image = screenshot; 

    } 
    } 

但是,與此我得到一個錯誤,作爲CopyFromScreen:找不到標識符。我試圖搜索abt這個和它顯示的語法是正確的。

回答

0

假設CopyFromScreen不是自定義free function這是不包含在您的示例中它是member of the Graphics class

你應該調用它本身(如你在上面的符合Graphics::FromImage()做:

graph = Graphics::CopyFromScreen(bounds->X, bounds->Y, 0, 0, bounds-> Size, CopyPixelOperation::SourceCopy); 

編輯

爲了解決您的評論,我的疏忽: CopyFromScreen不是靜態的,所以它必須在首先需要創建的特定對象上調用:

graph.CopyFromScreen(bounds->X, bounds->Y, 0, 0, bounds-> Size, CopyPixelOperation::SourceCopy); 
+0

當我進行更改時出現此錯誤C2352:'System :: Drawing :: Graphics :: CopyFromScreen':非法調用非靜態成員函數錯誤C3861:'CopyFromScreen':標識未找到 – ujwala

+0

請看我的編輯! – namezero

+0

即使我這樣做,我得到同樣的錯誤。 – ujwala

相關問題