3

目前我正在使用 C# 和 WPF,我想创建一个多用户应用程序。我指的是多点触控表

我正在寻找一种方法来拥有多个可以旋转的 Windows 键盘。

我想使用 Windows 键盘,因为我不可能为每种语言创建不同的键盘,包括中文、俄语、日语、希腊语等。

要显示我使用的键盘:

Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + System.IO.Path.DirectorySeparatorChar + "osk.exe"); 

下面是我想要的一个例子。

多个键盘

4

1 回答 1

1

在 WPF 中,RenderTransform可以通过这种方式大致旋转控件:

<Label Width="50" Height="20">
    <Label.RenderTransform>
        <RotateTransform Angle="90" />
    </Label.RenderTransform>
</Label>

在这种情况下,Label旋转 90 度。但是Window无法旋转 chrome 的对象,因为Window现在 GDI 仍在渲染 chrome。

在您的情况下,我可以建议为符合您要求的 WPF查找/创建/等键盘控件。例如,我通过链接找到了这样一个控件:

在此处输入图像描述

为了增加控件的旋转,我添加了两个按钮:RotateOn180RotateOn360in 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

在此处输入图像描述

于 2013-08-16T09:58:30.817 回答