WPFのWindowに<Grid>での縦横の枠を作り、その枠のうちのいくつかに、背景色を設定したいと思っています。
各枠内にRGB設定用のスライダーをR用、G用、B用の3つずつ、それぞれ作っています(今回は、最初の枠だけをサンプルで載せました)。
このようにしたもので、RGBの設定をするたびにそれぞれの枠背景色が指定通り変わるようにしたいのです。下部に載せたようなRectangleを使うことでもいいのです。
私の問題として、MVVMが使えないので、C#で操作できるようにしたいと思います。
もちろん、XAMLでもできるようになればうれしいのですが、残念ながらアレンジできません。
XAML
1 <Grid x:Name="ColorGrid"> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="1.5*"/> 4 <RowDefinition Height="3*"/> 5 <RowDefinition Height="3*"/> 6 <RowDefinition Height="3*"/> 7 </Grid.RowDefinitions> 8 <Grid.ColumnDefinitions> 9 <ColumnDefinition Width="4*"/> 10 <ColumnDefinition Width="4*"/> 11 <ColumnDefinition Width="4*"/> 12 <ColumnDefinition Width="4*"/> 13 </Grid.ColumnDefinitions> 14 15 <Label Content="Color Pallet" Grid.Column="1" HorizontalAlignment="Left" Margin="159,17,0,0" VerticalAlignment="Top" Grid.ColumnSpan="2" FontSize="16"/> 16 <Button Content="Cancel" Grid.Row="0" Grid.Column="3" x:Name="BtnCancel" HorizontalAlignment="Left" Height="46" Width="48" Margin="120,7,0,0" VerticalAlignment="Top" Click="BtnCancel_Click"/> 17 18 <Label Grid.Row="1" Grid.Column="0" Content="R" HorizontalAlignment="Left" Margin="10,64,0,0" VerticalAlignment="Top"/> 19 <Label Grid.Row="1" Grid.Column="0" Content="G" HorizontalAlignment="Left" Margin="10,78,0,0" VerticalAlignment="Top"/> 20 <Label Grid.Row="1" Grid.Column="0" Content="B" HorizontalAlignment="Left" Margin="10,92,0,0" VerticalAlignment="Top"/> 21 <TextBox Name="Box10R" Text="R" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="19" Margin="160,68,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="27" MaxLength="3" InputMethod.PreferredImeState="On" InputMethod.PreferredImeConversionMode="Alphanumeric" TextChanged="Box10R_TextChanged"/> 22 <TextBox Name="Box10G" Text="G" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="19" Margin="160,82,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="27" MaxLength="3" InputMethod.PreferredImeState="On" InputMethod.PreferredImeConversionMode="Alphanumeric" TextChanged="Box10G_TextChanged"/> 23 <TextBox Name="Box10B" Text="B" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="19" Margin="160,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="27" MaxLength="3" InputMethod.PreferredImeState="On" InputMethod.PreferredImeConversionMode="Alphanumeric"/> 24 25 <Slider Name="Sld10R" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="9" Margin="30,84,0,0" VerticalAlignment="Top" Width="128" Minimum="0" Maximum="255" ValueChanged="Sld10_ValueChanged" Value="255"> 26 <Slider.RenderTransform> 27 <TransformGroup> 28 <ScaleTransform ScaleY="-1"/> 29 <SkewTransform/> 30 <RotateTransform/> 31 <TranslateTransform/> 32 </TransformGroup> 33 </Slider.RenderTransform> 34 </Slider> 35 <Slider Name="Sld10G" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="9" Margin="30,98,0,0" VerticalAlignment="Top" Width="128" Maximum="255" ValueChanged="Sld10_ValueChanged" Value="255"> 36 <Slider.RenderTransform> 37 <TransformGroup> 38 <ScaleTransform ScaleY="-1"/> 39 <SkewTransform/> 40 <RotateTransform/> 41 <TranslateTransform/> 42 </TransformGroup> 43 </Slider.RenderTransform> 44 </Slider> 45 <Slider Name="Sld10B" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="9" Margin="30,112,0,0" VerticalAlignment="Top" Width="128" Maximum="255" ValueChanged="Sld10_ValueChanged" Value="255"> 46 <Slider.RenderTransform> 47 <TransformGroup> 48 <ScaleTransform ScaleY="-1"/> 49 <SkewTransform/> 50 <RotateTransform/> 51 <TranslateTransform/> 52 </TransformGroup> 53 </Slider.RenderTransform> 54 </Slider>
この先、GridのRowやColumnで区切られた四角内に背景色をつけようと思います。
まず、それぞれの枠を取得することすらできませんでしたので、
<Rectangle x:Name="Rtg10" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Height="126" VerticalAlignment="Top" Width="198" Stroke="Black"/>というようなRectangleを利用すべきかとも考えましたが、それでもコントロールできません。
参考になるサイトは見当たりませんでした。
もしも、直接の回答が煩わしければ、参考になるサイトの紹介でもありがたいと思います。
どうぞよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー