RadialController Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili perangkat input roda atau aksesori seperti Surface Dial.
Dengan faktor bentuk berdasarkan tindakan putar (atau gerakan), Surface Dial dimaksudkan sebagai perangkat input multi-modal sekunder yang melengkapi input dari perangkat utama. Dalam kebanyakan kasus, perangkat dimanipulasi oleh tangan pengguna yang tidak dominan saat melakukan tugas dengan tangan dominan mereka (seperti penintaan dengan pena). Ini tidak dirancang untuk input pointer presisi (seperti sentuhan, pena, atau mouse).
Surface Dial juga mendukung tindakan tekan dan tahan dan tindakan klik. Tekan dan tahan memiliki satu fungsi: tampilkan menu perintah. Jika menu aktif, putar dan klik input diproses oleh menu. Jika tidak, input diteruskan ke aplikasi Anda untuk diproses.
RadialController dan API terkait (lihat akhir topik) memungkinkan Anda menyesuaikan menu perintah terintegrasi dan pengalaman interaksi yang didukung oleh aplikasi Anda.
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
- Warisan
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 Anniversary Edition (diperkenalkan dalam 10.0.14393.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v3.0)
|
Contoh
Dalam contoh ini, kami menambahkan alat kustom ke menu Surface Dial dan mendeklarasikan handler input RadialController.
- Pertama, kita membuat referensi ke objek RadialController untuk Surface Dial (
myController
) dengan memanggil CreateForCurrentView. - Kami kemudian membuat instans RadialControllerMenuItem (
myItem
) dengan memanggil RadialControllerMenuItem.CreateFromIcon. - Selanjutnya, kami menambahkan item tersebut ke koleksi item menu.
- Kami mendeklarasikan penanganan aktivitas input (ButtonClicked dan RotationChanged) untuk objek RadialController.
- Terakhir, kami mendefinisikan penanganan aktivitas.
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;
}
}
Dalam fungsi inisialisasi yang ditunjukkan di sini, kami mendeklarasikan berbagai penanganan aktivitas input untuk objek 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();
}
Di handler ButtonClicked , interaksi mengatur status tombol pengalih untuk dicentang atau tidak dicentang.
// 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;
}
Di handler RotationChanged , interaksi memodifikasi nilai slider.
// 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);
}
Keterangan
Riwayat versi
Versi Windows | Versi SDK | Nilai ditambahkan |
---|---|---|
1703 | 15063 | ButtonHolding |
1703 | 15063 | Tombol Ditekan |
1703 | 15063 | ButtonReleased |
Properti
Menu |
Mendapatkan referensi ke menu yang terkait dengan objek RadialController . |
RotationResolutionInDegrees |
Mendapatkan atau menetapkan nilai rotasi minimum yang diperlukan agar objek RadialController mengaktifkan peristiwa RotationChanged . |
UseAutomaticHapticFeedback |
Mendapatkan atau mengatur apakah umpan balik haptik diaktifkan pada perangkat roda untuk setiap peristiwa RotationChanged yang diaktifkan oleh RadialController. |
Metode
CreateForCurrentView() |
Membuat instans objek RadialController untuk perangkat roda dan mengikatnya ke aplikasi aktif. |
IsSupported() |
Mengambil nilai yang menunjukkan apakah perangkat roda didukung oleh sistem. |
Acara
ButtonClicked |
Terjadi ketika perangkat roda ditekan dan kemudian dilepaskan saat alat RadialController kustom aktif. Aplikasi Anda tidak menerima peristiwa ini saat:
Catatan Saat ambang waktu disilangkan, klik menjadi tindakan tekan dan tahan. Dalam hal ini, menu terintegrasi dari perintah aplikasi kontekstual yang terkait dengan objek RadialController ditampilkan, dan peristiwa putar dan klik berikutnya diproses oleh menu. |
ButtonHolding |
Terjadi ketika pengguna menekan dan menahan perangkat roda. |
ButtonPressed |
Terjadi ketika perangkat roda ditekan. |
ButtonReleased |
Terjadi ketika perangkat roda ditekan lalu dilepaskan. |
ControlAcquired |
Terjadi ketika alat RadialController kustom (ditentukan oleh aplikasi) dipilih dari menu, atau ketika aplikasi yang terkait dengan objek RadialController dibawa ke latar depan saat alat RadialController kustom aktif. |
ControlLost |
Terjadi saat alat RadialController kustom (ditentukan oleh aplikasi) aktif, dan aplikasi yang terkait dengan objek RadialController dikirim ke latar belakang, atau pengguna mengaktifkan menu RadialController . |
RotationChanged |
Terjadi ketika perangkat roda diputar saat alat RadialController kustom aktif. Aplikasi Anda tidak menerima peristiwa ini saat:
|
ScreenContactContinued |
Hanya terjadi ketika perangkat roda dipindahkan saat bersentuhan dengan permukaan digitizer, dan alat RadialController kustom aktif. Aplikasi Anda tidak menerima peristiwa ini saat:
Tip Selain pengalaman menu tekan dan tahan default, Surface Dial juga dapat ditempatkan langsung di layar Surface Studio. Ini memungkinkan menu "di layar" khusus. Dengan mendeteksi lokasi kontak dan batas Surface Dial, sistem dapat menangani oklusi oleh perangkat dan menampilkan versi menu yang lebih besar yang membungkus di sekitar bagian luar Dial. Info yang sama ini juga dapat digunakan oleh aplikasi Anda untuk mengadaptasi UI untuk keberadaan perangkat dan penggunaan yang diantisipasi, seperti penempatan tangan dan lengan pengguna. Peristiwa ini terjadi setelah ScreenContactStarted dan berhenti di ScreenContactEnded. |
ScreenContactEnded |
Terjadi ketika perangkat roda yang bersentuhan dengan permukaan digitizer dihapus (atau tidak lagi terdeteksi), dan alat RadialController kustom aktif. Aplikasi Anda tidak menerima peristiwa ini saat:
Tip Selain pengalaman menu tekan dan tahan default, Surface Dial juga dapat ditempatkan langsung di layar Surface Studio. Ini memungkinkan menu "di layar" khusus. Dengan mendeteksi lokasi kontak dan batas Surface Dial, sistem dapat menangani oklusi oleh perangkat dan menampilkan versi menu yang lebih besar yang membungkus di sekitar bagian luar Dial. Info yang sama ini juga dapat digunakan oleh aplikasi Anda untuk mengadaptasi UI untuk keberadaan perangkat dan penggunaan yang diantisipasi, seperti penempatan tangan dan lengan pengguna. Kejadian ini terjadi setelah ScreenContactStarted. |
ScreenContactStarted |
Terjadi ketika kontak awal terdeteksi antara perangkat roda dan permukaan digitizer, dan alat RadialController kustom aktif. Aplikasi Anda tidak menerima peristiwa ini saat:
Tip Selain pengalaman menu tekan dan tahan default, Surface Dial juga dapat ditempatkan langsung di layar Surface Studio. Ini memungkinkan menu "di layar" khusus. Dengan mendeteksi lokasi kontak dan batas Surface Dial, sistem dapat menangani oklusi oleh perangkat dan menampilkan versi menu yang lebih besar yang membungkus di sekitar bagian luar Dial. Info yang sama ini juga dapat digunakan oleh aplikasi Anda untuk mengadaptasi UI untuk keberadaan perangkat dan penggunaan yang diantisipasi, seperti penempatan tangan dan lengan pengguna. |
Berlaku untuk
Lihat juga
- Windows.UI.Input
- RadialControllerButtonClickedEventArgs
- RadialControllerConfiguration
- RadialControllerControlAcquiredEventArgs
- RadialControllerMenu
- RadialControllerMenuItem
- RadialControllerRotationChangedEventArgs
- RadialControllerScreenContact
- RadialControllerScreenContactContinuedEventArgs
- RadialControllerScreenContactStartedEventArgs
- RadialControllerMenuKnownIcon
- RadialControllerSystemMenuItemKind
- Interaksi Surface Dial
- sampel Platform Windows Universal (C# dan C++)
- Sampel desktop Windows
- Sampel pengontrol radial