2013-08-15 5 views
3

На данный момент я работаю с C# и WPF, и я хочу создать многопользовательское приложение. Я указываю multitouch tables.Поверните Windows на экранной клавиатуре

Я ищу способ иметь несколько клавиатур Windows, которые можно повернуть.

Я хочу использовать клавиатуру для Windows, потому что это невозможно для меня, чтобы создать различные клавиатуры для каждого языка, включая китайский, русский, японский, греческий и т.д.

Чтобы показать клавиатуру я использую:

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

Ниже пример того, что я хочу.

Multiple keyboards

+0

Вы не собираетесь, чтобы получить это от osk.exe, это было сделано для настольных компьютеров. Спросите у суперпользователя об утилитах, которые переворачивают весь экран. В противном случае вы должны смотреть на мобильную среду разработки. WinRT, а не WPF. –

+0

Также я использую настольную машину. Когда я смотрю на [это приложение] (http://www.codeproject.com/Articles/498623/Multi-language-on-screen-keyboa), мне все еще кажется, что я могу что-то сделать. Он использует dll окон и использует WPF. Разве я не могу сделать что-то симуляру? Или загрузите .exe в рамку и поверните рамку. BTW, это мое первое приложение на C# :) –

+0

Правильно ли я понимаю, что вы хотите повернуть на 180 ° на клавиатуре? –

ответ

1

В WPF с RenderTransform управления может вращаться примерно таким образом:

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

В этом случае Label поворачивается на 90 градусов. Но объекты Window не могут быть повернуты, потому что теперь гайка Window по-прежнему отображается GDI.

В вашем случае я могу посоветовать найти/создать/etc управление клавиатурой для WPF, соответствующее вашим требованиям. Например, я нашел такой контроль, link:

enter image description here

Для того, чтобы добавить к вращению контроля, я добавил две кнопки: 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

enter image description here

+0

Спасибо! Я использую эту клавиатуру http://lars.werner.no/?page_id=922, но я не могу загрузить это приложение на C++ в WPF. Не могли бы вы указать мне в правильном направлении? –

+0

@ Bondye: К сожалению, я не могу точно сказать для этого случая. Я знаю, что проект C++ можно преобразовать в библиотеку DLL, а его функции можно вызвать в C# с помощью 'PInvoke'. [Link1] (http://social.msdn.microsoft.com/Forums/vstudio/en-US/8151b379-da96-4b43-a179-07a3bbb86fa/calling-c-dll-from-c), [Link2] (http : //stackoverflow.com/questions/569603/using-c-class-dll-in-c-sharp-application). Даже если вы вызываете его на C#, я не знаю, как вы можете повернуть - это «Окно» ('Control'?) В WPF. –