質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

2420閲覧

WPFを全画面で表示しようとすると真っ黒になってしまう

taq_cs

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/02/11 02:26

ゲームの得点表示画面を作りたい

お世話になっております。
現在WPFでゲームの得点を表示するアプリを作っています。
全画面で表示するようにしたいのですが、全画面で表示すると名前や得点のところがつぶれて画面がBackgroundで設定した黒一色になってしまいます。
どうしたらWPFで書き込んだ表示をちゃんと表示できるでしょうか?

該当のソースコード

XMAL

1 2 3<Window x:Class="nOmX.ViewPanel" 4 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 xmlns:local="clr-namespace:nOmX" 9 mc:Ignorable="d" 10 Title="ViewPanel" 11 Height="1080" Width="1920"> 12 <Grid Background="Black"> 13 <!--プレイヤー1--> 14 <Viewbox Margin="5,180,1790,810"> 15 <TextBox x:Name="P1Res" TextAlignment="Center" HorizontalAlignment="Left" TextWrapping="Wrap" Width="120" FontSize="60" Foreground="Red" Background="Black" BorderBrush="Black"/> 16 </Viewbox> 17 <Viewbox Margin="5,270,1790,360"> 18 <TextBlock x:Name="P1Name" TextWrapping="Wrap" FontSize="40" Foreground="White" TextAlignment="Center" HorizontalAlignment="Stretch" /> 19 </Viewbox> 20 <Viewbox Margin="5,720,1790,190"> 21 <TextBox x:Name="P1O" TextAlignment="Center" TextWrapping="Wrap" Text="0" FontSize="60" Foreground="Red" Background="Black" BorderBrush="Black"/> 22 </Viewbox> 23 <Viewbox Margin="5,890,1790,20"> 24 <TextBox x:Name="P1X" TextAlignment="Center" TextWrapping="Wrap" Text="0" FontSize="60" Background="Black" Foreground="#FF1800FF" BorderBrush="Black" /> 25 </Viewbox> 26 <!--プレイヤー2--> 27 <Viewbox Margin="155,180,1640,810"> 28 <TextBox x:Name="P2Res" TextAlignment="Center" HorizontalAlignment="Left" TextWrapping="Wrap" Width="120" FontSize="60" Foreground="Red" Background="Black" BorderBrush="Black"/> 29 </Viewbox> 30 <Viewbox Margin="155,270,1640,360"> 31 <TextBlock x:Name="P2Name" TextWrapping="Wrap" FontSize="40" Foreground="White" TextAlignment="Center" HorizontalAlignment="Stretch" /> 32 </Viewbox> 33 <Viewbox Margin="155,720,1640,190"> 34 <TextBox x:Name="P2O" TextAlignment="Center" TextWrapping="Wrap" Text="0" FontSize="60" Foreground="Red" Background="Black" BorderBrush="Black"/> 35 </Viewbox> 36 <Viewbox Margin="155,890,1640,20"> 37 <TextBox x:Name="P2X" TextAlignment="Center" TextWrapping="Wrap" Text="0" FontSize="60" Background="Black" Foreground="#FF1800FF" BorderBrush="Black" /> 38 </Viewbox> 39 40<!--以下何名か同じプレーヤー要素を追加する予定--> 41 </Grid> 42</Window> 43 44

C#

1 public partial class ViewPanel : Window 2 { 3   //listにほかのメソッドから名前、Op,Xpにポイントが入ってきます。 4   //少なくともそのあたりの文字の操作はうまくいっていました。 5 public ViewPanel(List<string> list, int Op, int Xp) 6 { 7 InitializeComponent(); 8 9 for (int i = 0; i < 12; i++) 10 { 11 if (!string.IsNullOrEmpty(list[i])) 12 { 13 string Pname = $"P{i + 1}Name"; 14 TextBlock tb = this.FindName(Pname) as TextBlock; 15 string _name = list[i]; 16 string name = ""; 17 for(int x = 0; x < _name.Length; x++) 18 { 19 tb.Inlines.Add(new Run($"{_name.Substring(x, 1)}")); 20 tb.Inlines.Add(new Run(Environment.NewLine)); 21 } 22 } 23 else 24 { 25 string PO = $"P{i + 1}O"; 26 TextBox box = this.FindName(PO) as TextBox; 27 box.Visibility = Visibility.Hidden; 28 29 string PX = $"P{i + 1}X"; 30 TextBox boxX = this.FindName(PX) as TextBox; 31 boxX.Visibility = Visibility.Hidden; 32 } 33 } 34 ////全画面表示 35 this.WindowStyle = WindowStyle.None; 36 this.WindowState = WindowState.Maximized; 37 }

試したこと

拡大せず、初期の450,800サイズで配置した時は思った通りに表示されましたが、全画面に表示したときにうまくいかなかったため、サイズを最初から全画面サイズにして作ろうとしました。
最初から全画面表示での使用を前提としているので、全画面でのサイズで表示できればいいのですが・・・

補足情報(FW/ツールのバージョンなど)

Visual Studio 2017を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Viewbox を使っていることの意味が分かりません。
拡大縮小表示とかそういうことがしたいのですか?
また、なぜ、Marginを使ったレイアウトをしているのですか?
Marginは微修正用です。

適切にレイアウトしてほしいなら、
Grid StackPanel DockPanel を使ってください。
https://ufcpp.net/study/dotnet/wpf_container.html

投稿2019/02/11 04:11

kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taq_cs

2019/02/11 05:37

指摘を受けてコンテナの使い方を勉強し直したところ、うまく思った通りの実相をすることができました。勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問