Windows Mobile Developer Center >
Windows Mobile & Embedded Foren
>
Windows Mobile & Windows phone
>
Behandlung von landscape und portrait mit verschiedenen Forms
Behandlung von landscape und portrait mit verschiedenen Forms
- Hi,
ich versuche eine applikation zu bauen, die leider bitmaps in der gui benötigt. Dadurch wird das wechseln zwischen landscape und portrait etwas schwieriger.
Wie kann ich das drehen der Orientierung im Code abfangen um dann verschiedene Formulare für landscape und Portrait anzuzeigen?
Gruß,
Daniel
Antworten
Eine weitere Frage ist, ob ich den landscape mode erzwingen kann.
Wenn ich ein Design für Landscape erstelle, zeigt er es trotzdem horizontal an, wenn das Smartphone nicht im Landscape mode ist.
Ich hätte es gern, dass die Oberfläche immer im landscape mode ist.
Klar. Mit der Funktion ChangeDisplaySettingsEx. Siehe auch http://www.pinvoke.net/default.aspx/coredll.changedisplaysettingsex für PInvoke.
http://patrickgetzmann.spaces.live.com/blog- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorSonntag, 1. November 2009 14:02
- Als Antwort vorgeschlagenRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:15
- Das drehen des Displays geht auch direkt mit dem Windows Mobile SDK:
http://msdn.microsoft.com/de-de/library/microsoft.windowsce.forms.systemsettings.screenorientation.aspx
Das die Elemente kein zweites Mal hinzugefügt werden ist darauf zu achten, dass wirklich nur die Position und die Größe der Elemente auf der Form oder im Container angepasst werden. Ein Form.Controls.Add, bzw. Container.Controls.Add sollte also nicht auftauchen.
This posting is provided "AS IS" with no warranties, and confers no rights.- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorSonntag, 1. November 2009 14:02
- BearbeitetRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:14Hyperlink als Hyperlink
- Als Antwort vorgeschlagenRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:15
Alle Antworten
- Hallo,
für diesen Zweck kannst du die System Notification API aus dem Windows Mobile 5/6 SDK verwenden.
Hier noch der zugehörige Codeschnipsel:
...
private SystemState myDisplayRotation = new SystemState(SystemProperty.DisplayRotation);
myDisplayRotation.Changed += new ChangeEventHandler(myDisplayRotation_Changed);
...
void myDisplayRotation_Changed(object sender, ChangeEventArgs args)
{
this.SuspendLayout();
if (SystemSettings.ScreenOrientation == ScreenOrientation.Angle0 ||
SystemSettings.ScreenOrientation == ScreenOrientation.Angle180)
{
// set vertical GUI layout
AlignGUIElementsVertical();
}
else
{
// set horizontal GUI layout
AlignGUIElementsHorizontal();
}
this.ResumeLayout();
}
Die Methoden AlignGUIElementsVertical(); und AlignGUIElementsHorizontal(); setzen die Position und Größe der grafischen Elemente neu.
Ein wenig hackelig, aber möglich.
Darüber hinaus gibt es ein Steuerelement eines Drittherstellers, welcher für diesen Zweck geeignet werden soll.
Zu finden ist dies hier: http://www1.orientationaware.net/home.html
Je nach Anwendungsfall ist dort auch eine Community Edition frei verfügbar.
Gruß, Peter
This posting is provided "AS IS" with no warranties, and confers no rights.- BearbeitetRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:13Hyperlink als Hyperlink
- Für Manged Code: http://msdn.microsoft.com/en-us/library/ms838174.aspx
Für native Code: http://msdn.microsoft.com/en-us/library/ms839354.aspx
Interessant dürfte auch folgender Artikel sein: http://msdn.microsoft.com/de-de/magazine/cc546609.aspx
http://patrickgetzmann.spaces.live.com/blog - Ich habe mal die von Peter angebene Methode ausprobiert. Das trifft schon fast meien Anforderungen, allerdings werden die alten Componenten nicht gelöscht, sodass alle Komponenten 2x auf dem Display erscheinen.
Wie kann ich das umgehen und die alten Komponten löschen vor dem neuzeichnen? - Eine weitere Frage ist, ob ich den landscape mode erzwingen kann.
Wenn ich ein Design für Landscape erstelle, zeigt er es trotzdem horizontal an, wenn das Smartphone nicht im Landscape mode ist.
Ich hätte es gern, dass die Oberfläche immer im landscape mode ist. Eine weitere Frage ist, ob ich den landscape mode erzwingen kann.
Wenn ich ein Design für Landscape erstelle, zeigt er es trotzdem horizontal an, wenn das Smartphone nicht im Landscape mode ist.
Ich hätte es gern, dass die Oberfläche immer im landscape mode ist.
Klar. Mit der Funktion ChangeDisplaySettingsEx. Siehe auch http://www.pinvoke.net/default.aspx/coredll.changedisplaysettingsex für PInvoke.
http://patrickgetzmann.spaces.live.com/blog- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorSonntag, 1. November 2009 14:02
- Als Antwort vorgeschlagenRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:15
- Das drehen des Displays geht auch direkt mit dem Windows Mobile SDK:
http://msdn.microsoft.com/de-de/library/microsoft.windowsce.forms.systemsettings.screenorientation.aspx
Das die Elemente kein zweites Mal hinzugefügt werden ist darauf zu achten, dass wirklich nur die Position und die Größe der Elemente auf der Form oder im Container angepasst werden. Ein Form.Controls.Add, bzw. Container.Controls.Add sollte also nicht auftauchen.
This posting is provided "AS IS" with no warranties, and confers no rights.- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorSonntag, 1. November 2009 14:02
- BearbeitetRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:14Hyperlink als Hyperlink
- Als Antwort vorgeschlagenRobert BreitenhoferMSFT, ModeratorSonntag, 25. Oktober 2009 12:15
Hallo dwischer,
Haben Dir die Antworten weiter geholfen?
Grüße,
Robert


