powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
7 сообщений из 7, страница 1 из 1
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37553660
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37553956
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

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

О спасибо за наводку.
Нашел темку тут .
Там есть такая штучка
автор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
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37554614
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но на большой скорости печати, это не помогает.

пришлось заюзать RenderTargetBitmap
...
Рейтинг: 0 / 0
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37554780
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37624465
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чето опять не получается.
никто еще не столкнулся с этим?
напомню:
у меня usercontrol с полями и т.д.
кодом я назначаю ему данные.
потом кодом отправляю на печать, через printvisual.
и на печать, получаю только первый образец на всех бумажках.
то есть wpf не отрисовывает смену данных и в принтер всегда уходит одна и таже картинка.
...
Рейтинг: 0 / 0
WPF печать Visual , без вызова ShowDialog. Не получается написать правильный код.
    #37624539
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myCanvas.UpdateLayout

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


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