2012-01-06 86 views
0

我試圖通過使用Visual Studio 2008 C++ Windows窗體應用程序繪製位圖來打印datagridview,但是我在轉換標題中提到的兩種類型時遇到麻煩。這是被調用的方法:drawToBitmap將System :: Windows :: Forms :: Control :: DrawToBitmap轉換爲System :: Drawing :: Rectangle的方法

private: 
    void printDocument1_PrintPage(System::Object^sender, 
     System::Drawing::Printing::PrintPageEventArgs^e) 
    { 
     Bitmap^ bm = gcnew Bitmap(this->dataGridView1->Width, this->dataGridView1->Height); 
      this->dataGridView1->DrawToBitmap(bm, new Rectangle(0, 0, this->dataGridView1->Width, this->dataGridView1->Height)); 
      e->Graphics->DrawImage(bm, 0, 0); 
    } 
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
     printDialog1->ShowDialog(); 
     printDocument1->Print(); 
    } 

但是在編譯的代碼我得到這個錯誤:

error C2664: 'System::Windows::Forms::Control::DrawToBitmap' : cannot convert parameter 2 from 'System::Drawing::Rectangle *' to 'System::Drawing::Rectangle' 

我無言以對。我該如何解決這個錯誤?

+1

矩形是一種值類型。只要刪除*新*。 – 2012-01-06 20:31:53

+0

刪除新的功能也很有幫助。謝謝。 – Bugster 2012-01-06 20:36:39

回答

2

不應該new Rectangle(...)代碼是gcnew Rectangle(...)?請記住,在託管C++中,newgcnew不同。

+0

我修正了這個錯誤,但仍然出現錯誤: 錯誤C2664:'System :: Windows :: Forms :: Control :: DrawToBitmap':無法將參數2從'System :: Drawing :: Rectangle ^'轉換爲'System :: Drawing :: Rectangle' – Bugster 2012-01-06 19:26:45

+0

我會在外面創建'Rectangle'像這樣: 'Rectangle myRect; myRect.X = 0; myRect.Y = 0; myRect.Width =這個 - > dataGridView1->寬度;由於靜態方法返回一個值類型(即「矩形」),因此您也可以使用'Rectangle :: FromLTRB(...)'重做內聯代碼。 顯然,在託管C++中,您必須注意明確需要值類型的位置,還是處理('^')引用類型。 – hypercode 2012-01-06 19:47:58

+1

另外,只要嘗試引用新的'Rectangle'的句柄:'* gcnew Rectangle(...)'。 – hypercode 2012-01-06 19:52:02

相關問題