Печать 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты