Печать нескольких элементов UIE в Silverlight 4 - PullRequest
0 голосов
/ 17 августа 2011

У меня есть страница с двумя UIElement, которые нужно распечатать, одна из них - StackPanel, а другая - пользовательский элемент управления графиком для отображения результатов тестов.Элемент управления графиком может быть любой длины в зависимости от количества отображаемых тестов, поэтому иногда мне удастся уместить как одну страницу, так и в другое время потребуются отдельные страницы.

Печать их на отдельных страницах работает нормально, так как я просто установил UIElement на страницу визуально, проблема в том, что я не могу понять, как объединить их для печати на одной странице.Я попытался создать StackPanel в codebehind и добавить к нему элементы, но поскольку у элемента может быть только один родительский элемент, мне нужно создать временные объекты для хранения каждого из них, пока я удаляю исходный родительский элемент, а затем назначить временную температуру новому StackPanel.,Проблема в том, что после того, как я это сделаю, все связанные данные пропадут

Любые идеи будут потрясающими!Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Или просто поместите изображение в Canvas, а затем сравните высоту Canvas и высоту изображения, чтобы вычислить количество страниц.

0 голосов
/ 17 августа 2011

Вместо добавления фактических элементов в StackPanel для печати, вы можете создавать снимки этих элементов и добавлять только изображения в StackPanel. Вы можете использовать следующий метод для создания Image из UIElement:

public static Image CreateElementImage(UIElement element) 
{
    var bitmap = new WriteableBitmap((int)element.RenderSize.Width, (int)element.RenderSize.Height);

    Array.Clear(bitmap.Pixels, 0, bitmap.Pixels.Length);
    bitmap.Render(element, element.RenderTransform);
    bitmap.Invalidate();

    var result = new Image {Source = bitmap};

    return result;
}
...