RadialController Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un dispositivo de entrada de rueda o accesorio como Surface Dial.
Con un factor de forma que se basa en una acción (o gesto) de giro, Surface Dial se ha diseñado como un dispositivo de entrada secundario multimodal que complementa la entrada de un dispositivo principal. En la mayoría de los casos, el dispositivo se manipula con la mano no dominante del usuario mientras realiza una tarea con la mano dominante (por ejemplo, una entrada manuscrita con un lápiz). No está diseñado como una entrada de puntero de precisión (por ejemplo, entrada táctil, lápiz o mouse).
Surface Dial también admite una acción de pulsar y sostener y una acción de hacer clic. Pulsar y sostener tiene una única función: mostrar un menú de comandos. Si el menú está activo, este procesa la entrada de girar y hacer clic. De lo contrario, la entrada se pasa a la aplicación para su procesamiento.
RadialController y las API relacionadas (consulte el final del tema) permiten personalizar el menú de comandos integrado y la experiencia de interacción compatible con la aplicación.
public ref class RadialController sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class RadialController final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class RadialController
Public NotInheritable Class RadialController
- Herencia
- Atributos
Requisitos de Windows
Familia de dispositivos |
Windows 10 Anniversary Edition (se introdujo en la versión 10.0.14393.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v3.0)
|
Ejemplos
En este ejemplo, agregamos una herramienta personalizada al menú surface Dial y declaramos los controladores de entrada RadialController.
- En primer lugar, creamos una referencia al objeto RadialController para Surface Dial (
myController
) llamando a CreateForCurrentView. - A continuación, creamos una instancia de un RadialControllerMenuItem (
myItem
) llamando a RadialControllerMenuItem.CreateFromIcon. - Después, anexamos ese elemento a la colección de elementos de menú.
- Declaramos los controladores de eventos de entrada (ButtonClicked y RotationChanged) para el objeto RadialController.
- Por último, definimos los controladores de eventos.
public sealed partial class MainPage : Page
{
RadialController myController;
public MainPage()
{
this.InitializeComponent();
// Create a reference to the RadialController.
myController = RadialController.CreateForCurrentView();
// Create an icon for the custom tool.
RandomAccessStreamReference icon =
RandomAccessStreamReference.CreateFromUri(
new Uri("ms-appx:///Assets/StoreLogo.png"));
// Create a menu item for the custom tool.
RadialControllerMenuItem myItem =
RadialControllerMenuItem.CreateFromIcon("Sample", icon);
// Add the custom tool to the RadialController menu.
myController.Menu.Items.Add(myItem);
// Declare input handlers for the RadialController.
myController.ButtonClicked += MyController_ButtonClicked;
myController.RotationChanged += MyController_RotationChanged;
}
// Handler for rotation input from the RadialController.
private void MyController_RotationChanged(RadialController sender,
RadialControllerRotationChangedEventArgs args)
{
if (RotationSlider.Value + args.RotationDeltaInDegrees > 100)
{
RotationSlider.Value = 100;
return;
}
else if (RotationSlider.Value + args.RotationDeltaInDegrees < 0)
{
RotationSlider.Value = 0;
return;
}
RotationSlider.Value += args.RotationDeltaInDegrees;
}
// Handler for click input from the RadialController.
private void MyController_ButtonClicked(RadialController sender,
RadialControllerButtonClickedEventArgs args)
{
ButtonToggle.IsOn = !ButtonToggle.IsOn;
}
}
En la función de inicialización que se muestra aquí, declaramos los distintos controladores de eventos de entrada para el objeto RadialController.
// Create and configure our radial controller.
private void InitializeController()
{
// Create a reference to the RadialController.
radialController = RadialController.CreateForCurrentView();
// Set rotation resolution to 1 degree of sensitivity.
radialController.RotationResolutionInDegrees = 1;
// Declare input handlers for the RadialController.
radialController.ButtonClicked += (sender, args) =>
{ RadialController_ButtonClicked(sender, args); };
radialController.RotationChanged += (sender, args) =>
{ RadialController_RotationChanged(sender, args); };
radialController.ControlAcquired += (sender, args) =>
{ RadialController_ControlAcquired(sender, args); };
radialController.ControlLost += (sender, args) =>
{ RadialController_ControlLost(sender, args); };
radialController.ScreenContactStarted += (sender, args) =>
{ RadialController_ScreenContactStarted(sender, args); };
radialController.ScreenContactContinued += (sender, args) =>
{ RadialController_ScreenContactContinued(sender, args); };
radialController.ScreenContactEnded += (sender, args) =>
{ RadialController_ScreenContactEnded(sender, args); };
AddToLog("Input handlers created");
// Create the custom menu items.
CreateMenuItems();
// Specify the menu items.
ConfigureMenu();
}
En el controlador ButtonClicked , la interacción establece el estado de un botón de alternancia en activado o desactivado.
// Occurs when the wheel device is pressed and then released
// while a customRadialController tool is active.
// NOTE: Your app does not receive this event when the RadialController
// menu is active or a built-in tool is active
// Send click input to toggle button of active region.
private void RadialController_ButtonClicked(RadialController sender,
RadialControllerButtonClickedEventArgs args)
{
toggles[activeMenuItemIndex].IsOn = !toggles[activeMenuItemIndex].IsOn;
}
En el controlador RotationChanged , la interacción modifica el valor de un control deslizante.
// Occurs when the wheel device is rotated while a custom
// RadialController tool is active.
// NOTE: Your app does not receive this event when the RadialController
// menu is active or a built-in tool is active
// Send rotation input to slider of active region.
private void RadialController_RotationChanged(RadialController sender,
RadialControllerRotationChangedEventArgs args)
{
Slider slider = sliders[activeMenuItemIndex];
if (slider.Value + args.RotationDeltaInDegrees > 100)
{
slider.Value = 100;
return;
}
else if (slider.Value + args.RotationDeltaInDegrees < 0)
{
slider.Value = 0;
return;
}
slider.Value += args.RotationDeltaInDegrees;
AddToLog("\nRotation: " + sliders[activeMenuItemIndex].Name + " value changed to " + slider.Value);
}
Comentarios
Historial de versiones
Versión de Windows | Versión del SDK | Valor agregado |
---|---|---|
1703 | 15063 | ButtonHolding |
1703 | 15063 | ButtonPressed |
1703 | 15063 | ButtonReleased |
Propiedades
Menu |
Obtiene una referencia al menú asociado al objeto RadialController . |
RotationResolutionInDegrees |
Obtiene o establece el valor de rotación mínimo necesario para que el objeto RadialController active un evento RotationChanged . |
UseAutomaticHapticFeedback |
Obtiene o establece si los comentarios hápticos están habilitados en el dispositivo wheel para cada evento RotationChanged desencadenado por radialController. |
Métodos
CreateForCurrentView() |
Crea una instancia de un objeto RadialController para el dispositivo wheel y lo enlaza a la aplicación activa. |
IsSupported() |
Recupera un valor que indica si el sistema admite dispositivos de rueda. |
Eventos
ButtonClicked |
Se produce cuando se presiona el dispositivo de rueda y, a continuación, se libera mientras una herramienta RadialController personalizada está activa. La aplicación no recibe este evento cuando:
Nota Cuando se cruza un umbral de tiempo, haga clic en una acción de presionar y mantener presionada. En este caso, se muestra el menú integrado de comandos de aplicación contextual asociados al objeto RadialController y el menú procesa los eventos de rotación y clic posteriores. |
ButtonHolding |
Se produce cuando el usuario presiona y mantiene presionado el dispositivo de rueda. |
ButtonPressed |
Se produce cuando se presiona el dispositivo de rueda. |
ButtonReleased |
Se produce cuando se presiona y se suelta el dispositivo de rueda. |
ControlAcquired |
Se produce cuando se selecciona una herramienta RadialController personalizada (definida por una aplicación) en el menú, o cuando una aplicación asociada al objeto RadialController se lleva al primer plano mientras está activa una herramienta RadialController personalizada. |
ControlLost |
Se produce mientras una herramienta RadialController personalizada (definida por una aplicación) está activa y la aplicación asociada al objeto RadialController se envía al fondo o el usuario activa el menú RadialController . |
RotationChanged |
Se produce cuando el dispositivo wheel se gira mientras una herramienta RadialController personalizada está activa. La aplicación no recibe este evento cuando:
|
ScreenContactContinued |
Se produce solo cuando el dispositivo de rueda se mueve mientras está en contacto con la superficie del digitalizador y una herramienta RadialController personalizada está activa. La aplicación no recibe este evento cuando:
Sugerencia Además de la experiencia de menú de pulsación y suspensión predeterminada, Surface Dial también se puede colocar directamente en la pantalla de Surface Studio. Esto activa un menú especial "en pantalla". Al detectar la ubicación de contacto y los límites de Surface Dial, el sistema puede controlar la oclusión por parte del dispositivo y mostrar una versión más grande del menú que se ajusta alrededor del exterior del dial. Esta misma información también puede usarla la aplicación para adaptar la interfaz de usuario tanto a la presencia del dispositivo y su uso anticipado, como a la ubicación de la mano y el brazo del usuario. Este evento se produce después de ScreenContactStarted y se detiene en ScreenContactEnded. |
ScreenContactEnded |
Se produce cuando se quita un dispositivo de rueda que está en contacto con la superficie del digitalizador (o ya no se detecta) y una herramienta RadialController personalizada está activa. La aplicación no recibe este evento cuando:
Sugerencia Además de la experiencia de menú de pulsación y suspensión predeterminada, Surface Dial también se puede colocar directamente en la pantalla de Surface Studio. Esto activa un menú especial "en pantalla". Al detectar la ubicación de contacto y los límites de Surface Dial, el sistema puede controlar la oclusión por parte del dispositivo y mostrar una versión más grande del menú que se ajusta alrededor del exterior del dial. Esta misma información también puede usarla la aplicación para adaptar la interfaz de usuario tanto a la presencia del dispositivo y su uso anticipado, como a la ubicación de la mano y el brazo del usuario. Este evento se produce después de ScreenContactStarted. |
ScreenContactStarted |
Se produce cuando se detecta contacto inicial entre un dispositivo de rueda y la superficie del digitalizador, y una herramienta RadialController personalizada está activa. La aplicación no recibe este evento cuando:
Sugerencia Además de la experiencia de menú de pulsación y suspensión predeterminada, Surface Dial también se puede colocar directamente en la pantalla de Surface Studio. Esto activa un menú especial "en pantalla". Al detectar la ubicación de contacto y los límites de Surface Dial, el sistema puede controlar la oclusión por parte del dispositivo y mostrar una versión más grande del menú que se ajusta alrededor del exterior del dial. Esta misma información también puede usarla la aplicación para adaptar la interfaz de usuario tanto a la presencia del dispositivo y su uso anticipado, como a la ubicación de la mano y el brazo del usuario. |
Se aplica a
Consulte también
- Windows.UI.Input
- RadialControllerButtonClickedEventArgs
- RadialControllerConfiguration
- RadialControllerControlAcquiredEventArgs
- RadialControllerMenu
- RadialControllerMenuItem
- RadialControllerRotationChangedEventArgs
- RadialControllerScreenContact
- RadialControllerScreenContactContinuedEventArgs
- RadialControllerScreenContactStartedEventArgs
- RadialControllerMenuKnownIcon
- RadialControllerSystemMenuItemKind
- Interacciones de Surface Dial
- Muestras de la Plataforma universal de Windows (C# y C++)
- Ejemplo de escritorio de Windows
- Ejemplo de controlador radial