PureBasic

WindowOutput()

Синтаксис

OutputID = WindowOutput(#Window)

Описание


Возвращает идентификатор "OutputID" указанного Окна, необходимый для выполнения на нём операций 2D графики.

Параметры

#Window Номер (внутренний для Purebasic), идентифицирующий указанное Окно.

Возвращаемое значение

Возвращает идентификатор "OutputID" указанного Окна, для выполнения на нём операций 2D графики. Это значение должно быть передано непосредственно в функцию StartDrawing(), чтобы появилась возможность начать рисование. После вызова функции StopDrawing(), текущий OutputID становится недействительным, поэтому каждый последующий запуск функции StartDrawing() требует нового вызова WindowOutput().

Пример

If OpenWindow(0, 0, 0, 220, 100, "Пример...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    Repeat
        Event = WaitWindowEvent()

        If Event = #PB_Event_Repaint ;  Каждый раз при пропадании содержимого, Окно будет перерисовываться заново.
            StartDrawing(WindowOutput(0))
            Box(10, 10, 50, 50, RGB(255, 0, 0))
            StopDrawing()
        EndIf
    Until Event = #PB_Event_CloseWindow
EndIf

Комментарии

Отрисованное в Окне содержимое стирается всякий раз, когда Окно или его часть перекрывается другим Окном, выходит за пределы экрана или когда Окно скрывается или сворачивается. Чтобы поддерживать вид отрисованного содержимого, его нужно перерисовывать после каждого события #PB_Event_Repaint. Более удобная альтернатива - рисовать содержимое посредством функции ImageOutput() и отображать как ImageGadget() в Окне приложения, и если нужно, обновлять с помощью функции SetGadgetState(). При таком способе все необходимые обновления обеспечит ImageGadget()

Пример

If OpenWindow(0, 0, 0, 220, 100, "Пример...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(1, 10, 60, 200, 30, "Рисовать в окне")
    Repeat
        Event = WaitWindowEvent()

        Select Event
            Case #PB_Event_Gadget
                Select EventGadget()
                    Case 1
                        ;Нарисует красную рамку в окне
                        If StartDrawing(WindowOutput(0))
                            Box(10, 10, 200, 30, RGB(255, 0, 0))
                            StopDrawing()
                        EndIf
                EndSelect
        EndSelect
    Until Event = #PB_Event_CloseWindow
EndIf

См. также

StartDrawing(), WindowVectorOutput()

Поддерживаемые OS

Все

<- WindowMouseY() - Оглавление Window - WindowVectorOutput()->

t�� ��f