Я пытаюсь напечатать 3 пользовательских элемента управления. В коде позади страницы xaml у меня есть такой код
private void Print_Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
PrintBitmapSource(RenderVisaulToBitmap(this, 816, 1057));
}
При нажатии кнопки я хочу напечатать 3 страницы формата А4, но экспортируется только одна, как и ожидалось. это - контрольная форма в коде позади.
public RenderTargetBitmap RenderVisaulToBitmap(Visual vsual, int width, int height)
{
RenderTargetBitmap rtb = new RenderTargetBitmap
(width, height, 96, 96, PixelFormats.Default);
rtb.Render(vsual);
BitmapSource bsource = rtb;
return rtb;
}
private void PrintBitmapSource(BitmapSource inBms)
{
var pd = new PrintDialog();
var ret = pd.ShowDialog();
if (ret.Value)
{
var dv = new DrawingVisual();
using (var dc = dv.RenderOpen())
{
dc.DrawImage(inBms, new Rect(0, 0, inBms.Width, inBms.Height));
}
pd.PrintQueue.Refresh();
while (pd.PrintQueue.NumberOfJobs != 0)
{
bool isQueued = false;
foreach (var job in pd.PrintQueue.GetPrintJobInfoCollection())
{
if (job.Name == "Print Car Setup")
isQueued = true;
}
if (!isQueued)
break;
Thread.Sleep(500);
pd.PrintQueue.Refresh();
}
pd.PrintVisual(dv, "Print Car Setup");
}
}