目前我正在使用C#和WPF,我想创建一个多用户应用程序。我指的是multitouch tables。
我正在寻找一种可以旋转多个Windows键盘的方法。
我想使用Windows键盘,因为我不可能为每种语言创建不同的键盘,包括中文,俄语,日语,希腊语等。
要显示我使用的键盘:
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + System.IO.Path.DirectorySeparatorChar + "osk.exe");
下面是我想要的例子。
答案 0 :(得分:1)
在带有RenderTransform
的WPF中,可以大致以这种方式旋转控件:
<Label Width="50" Height="20">
<Label.RenderTransform>
<RotateTransform Angle="90" />
</Label.RenderTransform>
</Label>
在这种情况下,Label
旋转90度。但是Window
的对象无法旋转,因为Window
Chrome现在仍然由GDI呈现。
在您的情况下,我可以建议查找/创建/等键盘控件以符合您的要求。例如,我通过link找到了这样的控件:
要添加到控件的旋转,我在 RotateOn180
中添加了两个按钮:RotateOn360
和VirtualKeyboard.xaml
。键盘本身位于停靠面板中,所以我写了这个:
<DockPanel Width="500" Height="200" RenderTransformOrigin="0.5,0.5">
<DockPanel.RenderTransform>
<RotateTransform x:Name="KeyboardRotation" Angle="0"/>
</DockPanel.RenderTransform>
....
单击按钮可启动动画,从而改变旋转角度。完整的附加代码:
<Grid>
<Grid.Triggers>
<EventTrigger SourceName="RotateOn180" RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="KeyboardRotation" Storyboard.TargetProperty="Angle">
<DoubleAnimation From="0" To="180" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger SourceName="RotateOn360" RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="KeyboardRotation" Storyboard.TargetProperty="Angle">
<DoubleAnimation From="180" To="360" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
<Button Name="RotateOn180" Content="RotateOn180" Width="80" Height="30" HorizontalAlignment="Left" />
<Button Name="RotateOn360" Content="RotateOn360" Width="80" Height="30" HorizontalAlignment="Left" Margin="0,80,0,0" />
<DockPanel Width="500" Height="200" RenderTransformOrigin="0.5,0.5">
<DockPanel.RenderTransform>
<RotateTransform x:Name="KeyboardRotation" Angle="0"/>
</DockPanel.RenderTransform>
...Below is a standard code of project...
Output