Computers && Coding == Art

PC Affinity [email protected]
Menu
  • Home
  • Downloads
  • Projects
  • About Me

MagicWheel Plugin

Download latest version from Github

Resource to add a graphics-based random animated wheel to any form.

Spin the wheel, select the winner.


This plugin was created for use with the Picket application. However, I decided to extend the usage and provide a detailed interface with multiple options. This wheel can be customized and used with any Control. Please remember to give credit if using my code within your applications.


To Use

Four simple steps.

  • Create the wheel object.
  • Add Entries to the list.
  • Draw the wheel.
  • Spin the wheel.

This example form shows nearly all options available in the interface.


When initializing the Wheel, any control can be used as the Parent.

// Link the wheel to a form.
IRandomTool wheel = new Wheel(this);

// Or link the wheel to a control.
IRandomTool wheel = new Wheel(label1);

Draw

// Use the Top Left Location and Radius.
wheel.Draw(LocationX, LocationY, Radius);

// Or use the Circle's center and Radius.
wheel.Draw(CenterPoint, Radus);

// Refresh calls Draw using the existing location data.
wheel.Refresh();

EntryList

// List of 'Entries' used for the wheel.
wheel.EntryList;

// Entry type contains a UniqueID(optional), Name, and Color.
// Returns a unique ticket ID that can optionally be set in the Entry.
wheel.EntryAdd(Entry);

// Remove uses an ID provided by EntryAdd.
wheel.EntryRemove(UniqueID);

// Clear the EntryList.
wheel.EntriesClear();

// Randomize the EntryList.
wheel.ShuffleEntries();

Action

// Returns true if the wheel is actively spinning.
wheel.IsBusy;

// Begin the spinning animation and random list pick.
// Uses preset or default settings.
wheel.Start();

// Or begin and set spin direction, spin type, and strength.
wheel.Start(animDirection, randPowerType, randStrength);

/*
'animDirection' can be Clockwise or CoutnerClockwise.
'randPowerType' can be Infinite, Weak, Average, Strong, Super, Random, or Manual.
'randStrength' is only used if 'randPowerType' is Manual.
*/

// Manually stop the picker and cancel the random pick.
wheel.Stop();

// If 'randPowerType' is Infinite, then Stop will slow the picker and still select randomly from the list.

Other

// Public function used to determine text color against the background.
wheel.IsReadable(Color1, Color2);

// Brings the PictureBox control to the front of the form.
wheel.BringToFront();

// Sends the PictureBox control to the back of the form.
wheel.SendToBack();

// Disposes of Image and PictureBox data.
// Must create a new wheel object after this is called.
wheel.Dispose();

Event Handlers

// This event is called each frame the wheel is moved.
// Entry returned is the currently selected entry on the wheel.
ToolActionEventHandler(Entry, string[4] actionInfo)

/*
The string array provided is a 4 part array.

Example return values in quotes:
Total Angles to turn. "1672"
Current Angle. "1671.018"
Current base speed adjustment. "-0.9000244"
Spin Strength. "Random|4"
*/

// This event is called when the wheel comes to a stop.
//Entry returned is the final selected Entry.
ToolStopEventHandler(Entry)

Settings

// If false, actions will return null instead of throwing an Exception.
wheel.AllowExceptions = true;

// Contains all other wheel settings.
wheel._ToolProperties;

// See below section for all _ToolProperties settings:

_ToolProperties

wheel._ToolProperties.ArrowPosition
wheel._ToolProperties.ArrowImage
wheel._ToolProperties.LineColor
wheel._ToolProperties.LineWidth
wheel._ToolProperties.ForceUniqueEntryColors
wheel._ToolProperties.TextToShow
wheel._ToolProperties.TextColor
wheel._ToolProperties.TextColorAuto
wheel._ToolProperties.TextFontFamily
wheel._ToolProperties.TextFontStyle
wheel._ToolProperties.ShadowVisible
wheel._ToolProperties.ShadowColor
wheel._ToolProperties.ShadowPosition
wheel._ToolProperties.ShadowLength
wheel._ToolProperties.CenterVisible
wheel._ToolProperties.CenterColor
wheel._ToolProperties.CenterSize



Please feel free to view the source code over at GitHub. Completely available. Let me know if you have any questions or concerns. And please share with your friends!



Share this:

  • Twitter
  • Facebook
  • SMS
  • Email

Like this:

Like Loading...

Leave a Reply Cancel reply

My LinkedIn Profile


'Derrick Ducote'

Tags

API ASP.NET C# Clipboard Cycler Cloudflare Coding ColorFadeCalculator ConsoleWriter DLL Downloads First FMOL Assistant FMOL Marquee FP Time Tracker Gaming Hotkey Commands HTML Learning MagicHat MagicWheel Mouse Commands NGINX Other Personal PHP Picket Projects RegistryCommands RoundedButtons Server Site Information Synology Toolkit Cleanup

Categories

  • Apps
  • Coding
  • Configurations
  • Other
  • PHP
  • Server
  • Site Information

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

PC Affinity 2023 . Powered by WordPress

%d bloggers like this: