Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код. / 7 сообщений из 7, страница 1 из 1
01.12.2011, 11:55
    #37553660
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Public Sub PrintListNoDialog()
        Dim prn As New PrintDialog



        u.RenderTransform = New RotateTransform( 90 )
        prn.PrintVisual(u, "List")
        u.RenderTransform = Nothing

    End Sub

Народ, вот этот, код, для печати без вызова окна диалога печати.
Только вот есть ньанс, который не позволяет использовать этот код без вызова ShowDialog .
Ньанс такой:
visual в переменной U это обычный usercontrol.
Canvas в нем сидит с графикой всякой разной.
Этот U изменяется кодом:подставнока графики.
На экране видим отображение этих изменений.
Потом идет отправка на печать через процедуру PrintListNoDialog.
И я получаю на печати предыдущее состояние этого U, а не то, что вижу сейчас.

Если включить использование ShowDialog, то все будет в порядке, на печать уйдет , то что я вижу.

Как заставить, печатать без ShowDialog текущее состояние U контрола?
...
Рейтинг: 0 / 0
01.12.2011, 13:34
    #37553956
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
AlexeiK,

что если ваш контрол отрендерить как Bitmap и после отправить на печать?
...
Рейтинг: 0 / 0
01.12.2011, 14:24
    #37554106
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
уТКа,

О спасибо за наводку.
Нашел темку тут .
Там есть такая штучка
авторFlushing the Dispatcher queue down to DispatcherPriority.Render

Just use Dispatcher.Invoke:

Dispatcher.Invoke(DispatcherPriority.Loaded, new Action(() => {}));

This causes an empty action to be invoked after all Render and higher priority actions have completed. The Dispatcher.Invoke method processes the dispatcher queue until it is empty down to Loaded level (which is right below Render).

The reason this is necessary is that many WPF UI components use the Dispatcher queue to delay processing until the control is ready to render. This significantly cuts down on unnecessary re-computation of visual properties during binding and other operations.

я сделал это, перед печатью, и все стало как ожидалось. печать идет, того, что видим.
...
Рейтинг: 0 / 0
01.12.2011, 17:30
    #37554614
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
но на большой скорости печати, это не помогает.

пришлось заюзать RenderTargetBitmap
...
Рейтинг: 0 / 0
01.12.2011, 18:38
    #37554780
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 u.Measure(New Size(Double.PositiveInfinity, Double.PositiveInfinity))
        u.Arrange(New Rect(u.DesiredSize))
        u.Dispatcher.Invoke(DispatcherPriority.Loaded, New Action(AddressOf test))

        Dim bmp As RenderTargetBitmap = New RenderTargetBitmap(...)


        bmp.Render(u)

вот последовательность.
после нее prnd.printvisual(u,"test")
...
Рейтинг: 0 / 0
20.01.2012, 16:54
    #37624465
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
чето опять не получается.
никто еще не столкнулся с этим?
напомню:
у меня usercontrol с полями и т.д.
кодом я назначаю ему данные.
потом кодом отправляю на печать, через printvisual.
и на печать, получаю только первый образец на всех бумажках.
то есть wpf не отрисовывает смену данных и в принтер всегда уходит одна и таже картинка.
...
Рейтинг: 0 / 0
20.01.2012, 17:29
    #37624539
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
myCanvas.UpdateLayout

помогло, окончательно.
как все просто.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]