in ExampleGallery/PrintingExample.xaml.cs [242:321]
private void DrawPage(CanvasPrintDocument sender, CanvasDrawingSession ds, uint pageNumber, Rect imageableRect)
{
var cellAcross = new Vector2(cellSize.X, 0);
var cellDown = new Vector2(0, cellSize.Y);
var totalSize = cellAcross * columns + cellDown * rows;
Vector2 topLeft = (pageSize - totalSize) / 2;
int bitmapIndex = ((int)pageNumber - 1) * bitmapsPerPage;
var labelFormat = new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 12,
VerticalAlignment = CanvasVerticalAlignment.Bottom,
HorizontalAlignment = CanvasHorizontalAlignment.Left
};
var numberFormat = new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 18,
VerticalAlignment = CanvasVerticalAlignment.Top,
HorizontalAlignment = CanvasHorizontalAlignment.Left
};
var pageNumberFormat = new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 10,
VerticalAlignment = CanvasVerticalAlignment.Bottom,
HorizontalAlignment = CanvasHorizontalAlignment.Center
};
var titleFormat = new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 24,
VerticalAlignment = CanvasVerticalAlignment.Top,
HorizontalAlignment = CanvasHorizontalAlignment.Left
};
if (pageNumber == 1)
ds.DrawText("Win2D Printing Example", imageableRect, Colors.Black, titleFormat);
ds.DrawText(string.Format("Page {0} / {1}", pageNumber, pageCount),
imageableRect,
Colors.Black,
pageNumberFormat);
DrawGrid(ds, cellAcross, cellDown, topLeft);
for (int row = 0; row < rows; ++row)
{
for (int column = 0; column < columns; ++column)
{
var cellTopLeft = topLeft + (cellAcross * column) + (cellDown * row);
var paddedTopLeft = cellTopLeft + textPadding / 2;
var paddedSize = cellSize - textPadding;
var bitmapInfo = bitmaps[bitmapIndex % bitmaps.Count];
// Center the bitmap in the cell
var bitmapPos = cellTopLeft + (cellSize - bitmapInfo.Bitmap.Size.ToVector2()) / 2;
ds.DrawImage(bitmapInfo.Bitmap, bitmapPos);
using (var labelLayout = new CanvasTextLayout(sender, bitmapInfo.Name, labelFormat, paddedSize.X, paddedSize.Y))
using (var numberLayout = new CanvasTextLayout(sender, (bitmapIndex + 1).ToString(), numberFormat, paddedSize.X, paddedSize.Y))
{
DrawTextOverWhiteRectangle(ds, paddedTopLeft, labelLayout);
DrawTextOverWhiteRectangle(ds, paddedTopLeft, numberLayout);
}
bitmapIndex++;
}
}
}