2016-06-21 57 views
1

我有一個dataGridView它是在一個TabPage中。現在我需要創建一個dataGridView的圖像,但是我在網上尋找解決方案,並且我找到了DrawToBitmap,但只需要dataGridView的一部分。datagridview裏面的tabpage到位圖

這是我使用的代碼,現在

bm = new Bitmap(this.dataGridView2.Width, this.dataGridView2.Height); 
dataGridView2.DrawToBitmap(bm,new Rectangle(100,100, his.dataGridView1.Width, this.dataGridView1.Height)); 
e.Graphics.DrawImage(bm, 0, 0); 
+0

而不是'100,100'使用'0,0'。 –

+0

@RezaAghaei這只是一個填充 –

+0

如果你需要在圖形周圍填充任何填充,也可以將填充添加到位圖大小。 'var padding = 100; var bm =新的位圖(dataGridView1.Width + 2 * padding,dataGridView1.Height + 2 * padding);' –

回答

0

下面是一個例子,如何以適應DataGridViewBitmap,甚至如果其含量低於DataGridViewTabPage甚至更​​大Form

訣竅是暫時放大DataGridViewDrawToBitmap調用,使所有細胞融入其中,並且沒有滾動條在那裏。隨後將其設置回適合您的佈局原來的大小..:

Size oldsize = dataGridView1.ClientSize; 
var tw = dataGridView1.Columns.Cast<DataGridViewColumn>().Select(x => x.Width).Sum(); 
var th = dataGridView1.Rows.Cast<DataGridViewRow>().Select(x => x.Height).Sum(); 

dataGridView1.ClientSize = new Size(tw + dataGridView1.RowHeadersWidth, 
            th + dataGridView1.ColumnHeadersHeight); 

Bitmap bmp = new Bitmap(dataGridView1.ClientSize.Width, dataGridView1.ClientSize.Height); 

using (Graphics G = Graphics.FromImage(bmp)) 
     dataGridView1.DrawToBitmap(bmp, dataGridView1.ClientRectangle); 

bmp.Save(yourFilename, ImageFormat.Png); 

dataGridView1.ClientSize = oldsize; 

如果你想填充圍繞它,你可以簡單地使Bitmap更大仍然,並明確寫出來的目標矩形的座標,而不是使用ClientRectangle ..