【问题标题】:error C3861 Graphics CopyFromScreen:identifier not found错误 C3861 图形 CopyFromScreen:找不到标识符
【发布时间】:2015-07-25 20:17:45
【问题描述】:

我正在使用 Visual Studio 2010,我正在编写代码以在单击按钮时捕获屏幕。我把代码写成

 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:Identifier not found。我试图搜索 abt 这个和它显示语法正确的所有地方。

【问题讨论】:

    标签: visual-studio-2010 visual-c++ c++-cli


    【解决方案1】:

    假设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);
    

    【讨论】:

    • 当我进行更改时,我收到此错误 C2352:'System::Drawing::Graphics::CopyFromScreen':非法调用非静态成员函数错误 C3861:'CopyFromScreen':标识符没找到
    • 我试图将 CopyFromScreen 设为静态,即静态双 CopyFromScreen;
    • 我不确定我是否理解您将CopyFromScreen设为静态的意思;这是一种库方法。请提供 SSCCE。
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    相关资源
    最近更新 更多