2016-06-21 6 views
1

Ich habe eine DataGridView, die innerhalb einer TabPage ist. Jetzt muss ich ein Image von dataGridView erstellen, aber ich suchte online nach Lösungen und ich fand DrawToBitmap, aber das nimmt nur einen Teil von dataGridView.datagridview innerhalb der Registerkarte zu Bitmap

Dies ist der Code, den ich jetzt

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

Statt '100,100' verwenden' 0,0'. –

+0

@RezaAghaei das ist nur ein Padding –

+0

Wenn Sie um die Zeichnung ein Padding benötigen, fügen Sie das Padding der Bitmap-Größe hinzu. 'var padding = 100; var bm = neues Bitmap (dataGridView1.Width + 2 * padding, dataGridView1.Height + 2 * padding); ' –

Antwort

0

Hier ist ein Beispiel, wie passt ein DataGridView auf eine Bitmap, auch , wenn sein Gehalt größer als die DataGridView oder TabPage oder sogar bin mit Form.

Der Trick ist, vorübergehend die DataGridView für den DrawToBitmap Aufruf zu vergrößern, so dass alle Zellen passen und keine Scrollbalken sind. Danach es wieder auf die ursprüngliche Größe festgelegt, dass Ihr Layout passt ..:

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; 

Wenn Sie padding um es können Sie einfach die Bitmapnoch größer machen noch und schreiben Sie die Koordinaten des Zielrechteck ausdrücklich, anstelle der ClientRectangle ..

Verwandte Themen