Share via


SO WIRD'S GEMACHT: Handle Bildschirm drehen

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Sie können Direct3D-Anwendungen für Bildschirmausrichtungen als Hochformat entwickeln. Allerdings bereitstellen Gerätetreiber unterschiedliche Ebenen der Unterstützung für die Wiedergabe im einen nicht-Hochformat, so dass Ihre Anwendung empfohlene Methoden zum Behandeln der Bildschirmdrehung sollten.

Hinweis

Verwaltete Direct3D mobile-Anwendungen erfordern Windows Mobile 5.0 Software für Pocket PCs und Smartphones.Finden Sie unter Externe Ressourcen für .NET Compact Framework für Informationen über Windows Mobile-Software und SDKs.

Die folgenden Codebeispiele sind in Windows Software Development Kit (SDK).

Um zu erkennen, dass ein Bildschirm gedreht ist

  1. Fügen Sie zu Ihrem Projekt einen Verweis auf die Komponente Microsoft.WindowsCE.Forms hinzu.

  2. Hinzufügen von Code zur Erkennung am einfachsten es in das Hauptformular ’s Resize Ereignishandler platzieren, werden. Einen Delegaten für den Ereignishandler in Ihrem Formular ’s Konstruktor hinzufügen.

    this.Resize += new System.EventHandler(this.MyForm_Resize);
    
    AddHandler Resize, AddressOf Me.MyForm_Resize
    
  3. Fügen Sie boolesche orientationChanged-Klasse-Membervariable, verfolgen wird, wenn die Ausrichtung geändert hat. Verwenden Sie den Wert der Eigenschaft ScreenOrientation, um aktuelle Ausrichtung zu bestimmen. Der Wert Angle0 gibt Hochformatmodus an. Wenn die aktuelle Ausrichtung von dem unterscheidet, notieren Sie durch Festlegen des orientationChanged Flags. Normalerweise wird keine Aktion zu diesem Zeitpunkt übernommen, da die Anwendung im Hintergrund möglicherweise. Nicht nicht programmgesteuert ändern die Ausrichtung hier da die Ausrichtung-Änderung, die das Ändern der Größe Ereignis ausgelöst hat noch wahrscheinlich nicht abgeschlossen ist. Wenn Sie versuchen, die Ausrichtung wieder ändern wird jetzt nicht.

        // Add a class member variable to
        // store that the orientation has changed.
        bool orientationChanged = false;
    
        private void MyForm_Resize(object sender, EventArgs e)
        {
           if (SystemSettings.ScreenOrientation !=
             ScreenOrientation.Angle0)
            orientationChanged = true;
        }
    
        ' Add a class member variable to
        ' store that the orientation has changed.
        Dim OrientationChanged As Boolean = False
    
    Private Sub MyForm_Resize(ByVal sender As Object, ByVal e As EventArgs)
        If (SystemSettings.ScreenOrientation <> ScreenOrientation.Angle0) Then
           orientationChanged = True
        End If
    End Sub
    

Wie Sie Aktion nutzen, wenn der Bildschirm gedreht wird

  • Sie können jeden Frame, um zu ermitteln, ob die Ausrichtung geändert hat, überprüfen. Die CheckRotation -Methode in der folgenden Codebeispiel wird die Bildschirmausrichtung durch Festlegen der Eigenschaft ScreenOrientation wieder in Hochformat geändert. Sie sollten andere Aktionen je nach der gewünschten Benutzerfreundlichkeit. Z. B. möglicherweise nicht die Anwendung die Bildschirmausrichtung eigenständig ändern möchten, aber stattdessen den Benutzer benachrichtigen, dass Rendering nicht, wenn der Benutzer es wieder ändert fortgesetzt. Wenn Sie die Bildschirmausrichtung ändern, sollten Sie auch speichern und Wiederherstellen die ursprünglichen Bildschirmausrichtung wie im folgenden Beispiel gezeigt. Wenn Sie die Bildschirmausrichtung nicht ändern, aber stattdessen einige andere Aktion nehmen, möglicherweise Rendering normalerweise fort, kann ohne Meldung fehlschlagen oder es durch Rückgabe einer Ausnahme fehlschlagen.

    Im folgenden Codebeispiel wird versucht, das Gerät in Orientierung Hochformat, einzufügen, wenn es nicht bereits im Hochformat ist. Die CheckOrientation -Methode gibt true zurück, wenn das Gerät im Hochformatmodus befindet.

    private bool CheckOrientation()
    {
        // orientationChanged is set to true in resize if it is
        // detected that the orientation of the device has changed.
        if (orientationChanged)
        {
          // Attempt to change the display back to portrait mode.
          try
          {
             SystemSettings.ScreenOrientation =
              ScreenOrientation.Angle0;
             // Now that the orientation is back to portrait mode
             // Do not attempt to change it again.
             orientationChanged = false;
           }
          catch (Exception)
          {
             // Failed to change the display mode.
             return false;
          }
        }
        return true;
    }
    
    // Use the CheckOrientation() method before rendering occurs.
    // All rendering for each frame occurs here.
    
    private void Render()
    {
        // If the device is not oriented properly, 
        // some display drivers may not work.
        if (!CheckOrientation())
            return;
            // Rendering code omitted here.
    }
    
    Private Function CheckOrientation() As Boolean
        ' orientationChanged is set to true in resize if it is
        ' detected that the orientation of the device has changed.
        If orientationChanged Then
            ' Attempt to change the display back to portrait mode.
            Try 
                SystemSettings.ScreenOrientation = ScreenOrientation.Angle0
                ' Now that the orientation is back to portrait mode
                ' Do not attempt to change it again.
                orientationChanged = false
            Catch  As Exception
                ' Failed to change the display mode.
                Return false
            End Try
        End If
        Return true
    End Function
    
    ' Use the CheckOrientation() method before rendering occurs.
    ' All rendering for each frame occurs here.
    Private Sub Render()
        ' If the device is not oriented properly, 
        ' some display drivers may not work.
        If Not CheckOrientation Then
            Return
        End If
        ' Rendering code omitted here.
    End Sub
    

Die Ausrichtung beim Beenden der Anwendung wiederherstellen

  • Wenn Sie die Bildschirmausrichtung programmgesteuert ändern möchten, sollten Sie auch die ursprüngliche Anwendung Ausrichtung wiederherstellen, wenn Ihre Anwendung beendet wird. Da eine Anwendung versucht möglicherweise, um die Ausrichtung während der Ausführung zu ändern, müssen Sie die ursprüngliche Ausrichtung speichern und wiederherstellen, wenn die Anwendung beendet wird. Fügen Sie eine Membervariable, die ursprüngliche Ausrichtung zu speichern.

    ScreenOrientation initialOrientation = SystemSettings.ScreenOrientation;
    
    ScreenOrientation initialOrientation = SystemSettings.ScreenOrientation;
    

    Fügen Sie diese am Ende der Main-Methode versucht, die Ausrichtung beim Beenden der Anwendung wiederherzustellen.

    if (SystemSettings.ScreenOrientation != initialOrientation)
    {
        try
        {
           SystemSettings.ScreenOrientation = initialOrientation;
        }
        catch (Exception)
        {
            // Unable to change the orientation back 
            // to the original configuration. 
    
            MessageBox.Show("This sample was unable to set the " +
                "orientation back to the original state.");
        }
    }
    
    If (SystemSettings.ScreenOrientation <> initialOrientation) Then
        Try 
            SystemSettings.ScreenOrientation = initialOrientation
        Catch  As Exception
            ' Unable to change the orientation back 
            ' to the original configuration. 
            MessageBox.Show(("This sample was unable to set the " & _
                "orientation back to the original state."))
        End Try
    End If
    

Siehe auch

Konzepte

.NET compact Framework Gewusst-wie-Themen

Weitere Ressourcen

Mobile Direct3D-Programmierung in .NET Compact Framework