Печать dataGridView из C++/CLI в Visual Studio
Давайте научимся создавать картинку для печати из dataGridView и отправлять её на печать с выбором принтера на C++/CLI в Visual Studio 2015. На самом деле это все несложно, но пришлось повозиться, чтобы найти полностью рабочий вариант, устраивающий меня.
Итак, кидаем на форму два элемента. printDocument1. Его обработчик
private: System::Void printDocument1_PrintPage(System::Object^ sender, System::Drawing::Printing::PrintPageEventArgs^ e) { int hey = 0; for (int i = 0; i < (dataGridView1->Rows->Count); i++) { hey = hey + dataGridView1->Rows[i]->Height; } Bitmap^ bmp = gcnew Bitmap(dataGridView1->Size.Width + 10, hey + 10);//немного прибавляем размер dataGridView1->DrawToBitmap(bmp, dataGridView1->Bounds); String^ drawString = "Какая-то строка"; System::Drawing::Font^ drawFont = gcnew System::Drawing::Font("Arial", 16);//шрифт SolidBrush^ drawBrush = gcnew SolidBrush(Color::Black);//цвет черный float x = 100.0F; float y = 100.0F; float width = 400.0F;//ширина строки float height = 50.0F;//высота RectangleF drawRect = RectangleF(x, y, width, height); e->Graphics->DrawString(drawString, drawFont, drawBrush, drawRect); e->Graphics->DrawImage(bmp, 0, 0); }Сначала мы в цикле определяем высоту всех ячеек датагрида, затем создаем битмап из него, далее добавляем прямоугольник с надписью, а также в объект дорисовываем картинку. Если надо, например, повернуть картинку, то это делается вот так:
bmp->RotateFlip(RotateFlipType::Rotate90FlipNone);Но вообще, так как мы вызываем стандартное диалоговое окно печати, то ориентацию лучше задавать в нем. Например, вот печать в Foxit (pdf файл):
И на форму кидаем кнопку, с обработчиком её по клику:
private: System::Void button8_Click(System::Object^ sender, System::EventArgs^ e) { PrintDialog^ printDialog1 = gcnew PrintDialog(); printDialog1->Document = printDocument1; if (printDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) printDocument1->Print(); }Здесь мы создаем объект класса PrintDialog, привязываем его к нашему документу, и если нажата кнопка «Ок», то отправляем его на печать.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.