C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB で画面回転


(過去ログ 132 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■78030 / inTopicNo.1)  VB で画面回転
  
□投稿者/ NOVO (1回)-(2015/12/08(Tue) 23:13:18)

分類:[VB.NET/VB2005 以降] 

VB2015で横の画面を作ったのですが、タブレットで使うと回転でクヅれてしまいます
プログラムの方の設定で回転させないようにする方法はないでしょうか?
もしくは回転した時の対処方法
例:回転したらフレームを変える見たいのことは出来るのでしょうか?
初心者で苦労して画面を作ってもう少しと言うところで挫折しています
どうか知恵をお貸し下さい
引用返信 編集キー/
■78032 / inTopicNo.2)  Re[1]: VB で画面回転
□投稿者/ 魔界の仮面弁士 (591回)-(2015/12/09(Wed) 01:09:23)
No78030 (NOVO さん) に返信
> VB2015で横の画面を作ったのですが、タブレットで使うと回転でクヅれてしまいます

現代仮名遣いでは、"くづれる" → "くずれる" だという点はさておき。


> もしくは回転した時の対処方法
プラットフォームは何でしょうか?

UWP アプリだとしたら…試したことはないですが、
Windows.Graphics.Display.DisplayInformation あたりかな。

System.Windows.Forms だとしたら、SystemInformation.ScreenOrientation で
画面の向きを取得できます。

回転が行われた時に処理を行いたいというのであれば、Microsoft.Win32.SystemEvents の
DisplaySettingsChanging / DisplaySettingsChanged イベントが使えます。



> 回転させないようにする方法
ロックされているかどうかだけなら
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation
あたりだと思いますが、設定できるかどうかは分かりません。
引用返信 編集キー/
■78033 / inTopicNo.3)  Re[2]: VB で画面回転
□投稿者/ NOVO (3回)-(2015/12/09(Wed) 01:22:32)
No78032 (魔界の仮面弁士 さん) に返信

早速の回答ありがとうございます
どうも初心者でよく解らないのですが
作った時は確か「WINDOWSフォーム」ってので作ったと思います
回答の頂いた
「System.Windows.Forms だとしたら、SystemInformation.ScreenOrientation で
画面の向きを取得できます。」
でいけるとは思うのですが
この記述、どこ見書けばいいのでしょうか?
コレを各画面に入れたら回転しなくなるのでしょうか?


引用返信 編集キー/
■78040 / inTopicNo.4)  Re[3]: VB で画面回転
□投稿者/ 魔界の仮面弁士 (592回)-(2015/12/09(Wed) 11:39:18)
No78033 (NOVO さん) に返信
> 作った時は確か「WINDOWSフォーム」ってので作ったと思います

了解です。であれば、先の回答の「System.Windows.Forms だとしたら」以降が該当しますね。


新規プロジェクト作成時に、プロジェクト テンプレートが幾つかあったと思いますが、
選択したものによって、使用可能なクラスが異なってきます。

各プロジェクトの違いをまだ把握していない状態であれば、今回のように、
「どのテンプレートを使って開発しているのか」を伝えて頂ければ、
利用可能なライブラリを回答側で汲み取って回答することができます。



> 回答の頂いた
> 「System.Windows.Forms だとしたら、SystemInformation.ScreenOrientation で
> 画面の向きを取得できます。」
> でいけるとは思うのですが
> この記述、どこ見書けばいいのでしょうか?
> コレを各画面に入れたら回転しなくなるのでしょうか?

「回転しなくなる」のではなく、上記に書いたように
「画面の向きを取得できる」だけです。

取得できた情報をどのように扱うのかは貴方次第。

画面の向きが変わっていたら、メッセージを出して向きを戻すよう案内するのか。
画面の向きに応じて、画面レイアウトを調整するようにするのか、
強制的に画面の向きを復元するのか。


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 If SystemInformation.ScreenOrientation = ScreenOrientation.Angle0 Then
  Label1.Text = "標準表示"
 ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle180 Then
  Label1.Text = "180度回転"
 ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle90 Then
  Label1.Text = "左90度回転"
 ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle270 Then
  Label1.Text = "右90度回転"
 Else
 Label1.Text = "ここには来ないはず…"
 End If
End Sub


上記のコードのように、ボタンを押したときに処理を行うのではなく、
回転された場合(というよりは、画面設定が変更されたとき)に処理を行うには、
>> 回転が行われた時に処理を行いたいというのであれば、Microsoft.Win32.SystemEvents の
>> DisplaySettingsChanging / DisplaySettingsChanged イベントが使えます。
を試してみてください。イベントの割り当て方が分からない場合は、MSDN ライブラリで
上記のイベント名を調べれば、具体的なサンプルも掲載されています。



強制的に画面の向きを変更する方法については、相手が Windows CE(PocketPC 等)なら
SystemSettings.ScreenOrientation プロパティに指定するだけで良いみたいですが、
デスクトップアプリの場合は該当クラスが提供されていないようです。
恐らくは、ChangeDisplaySettings API を呼び出さないと対応できないでしょう。


画面の回転を禁止する方法については、
前回も書いたように情報を持ち合わせていません。
引用返信 編集キー/
■78053 / inTopicNo.5)  Re[4]: VB で画面回転
□投稿者/ NOVO (5回)-(2015/12/10(Thu) 06:22:00)
No78040 (魔界の仮面弁士 さん) に返信

ありがとうございます
自分でも調べてみます
なんとなくイメージはわかってきました
まだ「 DisplaySettingsChanging と DisplaySettingsChanged の違いがわからなかったり
どこに記述していいかなど超初心者のようなところで悩んでいます

右回転されたら画面を左回転する みたいな感じでしょうか・・・?
画面が変わったら強制復元ってのもあるのですか?
なんとなく回転はわかったのですが
回転時の処理で90度ならフォームを変えたりするということでしょうか?
そうすると画像の回転の方法はネットでも載っているのですが
フォームを可能なんでしょうか?
フォームを回転させた時に中のラベルやボタンも回転してくれるのでしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -