{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[2];
pictureBox1.Invalidate();
}
}
private void menuAutoSize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[3];
pictureBox1.Invalidate();
}
}
private void cmenuResize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[0];
pictureBox1.Invalidate();
}
}
private void cmenuBase_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[1];
pictureBox1.Invalidate();
}
}
private void cmenuCenterImage_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[2];
pictureBox1.Invalidate();
}
}
private void cmenuAutoSize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[3];
pictureBox1.Invalidate();
}
}
private void menuPageSetup_Click(object sender, System.EventArgs e)
{
PageSetupDialog diag
= new PageSetupDialog();
diag.Document = printDocument1;
diag.ShowDialog();
}
private void menuPreview_Click(object sender, System.EventArgs e)
{
PrintPreviewDialog diag
= new PrintPreviewDialog();
diag.Document = printDocument1;
diag.ShowDialog();
}
private void menuPrint_Click(object sender, System.EventArgs e)
{
PrintDialog diag = new PrintDialog();
diag.Document = printDocument1;
if (diag.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//Если в pictureBox1 не загружена изображение, возвращаемся назад
if (pictureBox1.Image == null)
{
e.Cancel = true;
return;
}
//Определяемпечатнуюобластьстраницы
float leftMargin = e.MarginBounds.Left;
float rightMargin = e.MarginBounds.Right;
float topMargin = e.MarginBounds.Top;
float bottomMargin= e.MarginBounds.Bottom;
float printableWidth = e.MarginBounds.Width;
float printableHeight = e.MarginBounds.Height;
//Cоздаемэкземпляр graph класса Graphics
Graphics graph = e.Graphics;
//Создаемэкземпляр font класса Font
Font font= new Font("Comic Sans MS", 16);
//Определяемвысотушрифта
float fontHeight = font.GetHeight(graph);
//Определяемразмерпробелов
float spaceWidth = graph.MeasureString(" ", font).Width;
//Определяем область, в которую будет вписываться изображение,
//размер наибольшей стороны изображения составялет 90%
//от кратчайшей стороны листа
float imageLength;
float Xposition = leftMargin;
float Yposition = topMargin + fontHeight;
if (printableWidth < printableHeight)
{
imageLength = printableWidth * 90/100;
Yposition += imageLength;
}
else
{
imageLength = printableHeight * 90/100;
Xposition += imageLength + spaceWidth;
}
// Выводимизображениевобласти rectImage
Rectangle rectImage = new Rectangle((int)leftMargin + 1, (int)topMargin + 1,(int)imageLength, (int)imageLength);
graph.DrawImage(pictureBox1.Image,(int)leftMargin + 1, (int)topMargin + 1, (int)imageLength,(int)imageLength);
// Определяем область rectText и выводим в нее строку с размером файла
RectangleF rectText = new RectangleF(Xposition, Yposition, rightMargin - Xposition, bottomMargin - Yposition);
PrintText(graph, font,"Размеризображения: ", Convert.ToString(pictureBox1.Image.Size), ref rectText);
}
protected void PrintText( Graphics graph, Font font, string name, string text, ref RectangleF rectText)
{
// Определяем размеры печатной области для текста:
float leftMargin = rectText.Left;
float rightMargin = rectText.Right;
float topMargin = rectText.Top;
float bottomMargin = rectText.Bottom;
//Определяем высоту текста и координаты, где он будет выводиться:
float fontHeight = font.GetHeight(graph);
float Xposition = rectText.Left;
float Yposition = topMargin + fontHeight;
//Определяем ширину текста и размер пробелов
float spaceWidth = graph.MeasureString(" ", font).Width;
float nameWidth = graph.MeasureString(name, font).Width;
graph.DrawString(name, font,
Brushes.Black, new PointF(Xposition, Yposition));
leftMargin += nameWidth + spaceWidth;
Xposition = leftMargin;
// Формируем несколько строк для текста в случае,
// если он не будет умещаться на одной строке
string[] words
= text.Split(" \r\t\n\0".ToCharArray());
foreach (string word in words)
{
float wordWidth = graph.MeasureString(
word, font).Width;
if (wordWidth == 0.0)
continue;
if (Xposition + wordWidth > rightMargin)
{
// Начало с новой строки
Xposition = leftMargin;
Yposition += fontHeight;
if (Yposition > bottomMargin)
{
break;
}
}
graph.DrawString(word, font,Brushes.Black, new PointF(Xposition, Yposition));
Xposition += wordWidth;
}
// Исключаем область, на которую был выведен текст из области печати
//для избежания наложения текста и рисунка
rectText.Y = Yposition;
rectText.Height = bottomMargin - Yposition;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void menuFile_Click(object sender, EventArgs e)
{
}
private void menuView_Click(object sender, EventArgs e)
{
}
}
}