diff options
Diffstat (limited to 'TimeHACK.Main')
| -rw-r--r-- | TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.Designer.cs | 125 | ||||
| -rw-r--r-- | TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.cs | 20 | ||||
| -rw-r--r-- | TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.resx | 120 | ||||
| -rw-r--r-- | TimeHACK.Main/Properties/Resources.Designer.cs | 60 | ||||
| -rw-r--r-- | TimeHACK.Main/Properties/Resources.resx | 18 | ||||
| -rw-r--r-- | TimeHACK.Main/Resources/ButtonPattern.png | bin | 0 -> 165 bytes | |||
| -rw-r--r-- | TimeHACK.Main/Resources/GuessTheNumber/GTN95_Check.png | bin | 0 -> 308 bytes | |||
| -rw-r--r-- | TimeHACK.Main/Resources/GuessTheNumber/GTN95_CheckClicked.png | bin | 0 -> 314 bytes | |||
| -rw-r--r-- | TimeHACK.Main/Resources/GuessTheNumber/GTN95_Higher.png | bin | 0 -> 363 bytes | |||
| -rw-r--r-- | TimeHACK.Main/Resources/GuessTheNumber/GTN95_Restart.png | bin | 0 -> 376 bytes | |||
| -rw-r--r-- | TimeHACK.Main/Resources/GuessTheNumber/GTN95_RestartClicked.png | bin | 0 -> 377 bytes | |||
| -rw-r--r-- | TimeHACK.Main/TimeHACK.Main.csproj | 18 | ||||
| -rw-r--r-- | TimeHACK.Main/UI/IProgressBar.cs | 234 |
13 files changed, 358 insertions, 237 deletions
diff --git a/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.Designer.cs b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.Designer.cs new file mode 100644 index 0000000..1c3190f --- /dev/null +++ b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.Designer.cs @@ -0,0 +1,125 @@ +namespace TimeHACK.OS.Win95.Win95Apps +{ + partial class GuessTheNumber + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(20, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(224, 13); + this.label1.TabIndex = 0; + this.label1.Text = "I am thinking of a number between 1 and 100."; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(16, 36); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(40, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Guess:"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(58, 33); + this.textBox1.MaxLength = 3; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(33, 20); + this.textBox1.TabIndex = 2; + // + // pictureBox1 + // + this.pictureBox1.BackgroundImage = global::TimeHACK.Properties.Resources.GTN95_Check; + this.pictureBox1.Location = new System.Drawing.Point(191, 30); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(55, 27); + this.pictureBox1.TabIndex = 3; + this.pictureBox1.TabStop = false; + // + // pictureBox2 + // + this.pictureBox2.Location = new System.Drawing.Point(97, 31); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(88, 24); + this.pictureBox2.TabIndex = 4; + this.pictureBox2.TabStop = false; + // + // pictureBox3 + // + this.pictureBox3.BackgroundImage = global::TimeHACK.Properties.Resources.GTN95_Restart; + this.pictureBox3.Location = new System.Drawing.Point(19, 62); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(227, 23); + this.pictureBox3.TabIndex = 5; + this.pictureBox3.TabStop = false; + // + // GuessTheNumber + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Silver; + this.Controls.Add(this.pictureBox3); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "GuessTheNumber"; + this.Size = new System.Drawing.Size(268, 100); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.PictureBox pictureBox3; + } +} diff --git a/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.cs b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.cs new file mode 100644 index 0000000..112cb93 --- /dev/null +++ b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace TimeHACK.OS.Win95.Win95Apps +{ + public partial class GuessTheNumber : UserControl + { + public GuessTheNumber() + { + InitializeComponent(); + } + } +} diff --git a/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.resx b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TimeHACK.Main/OS/Win95/Win95Apps/GuessTheNumber.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root>
\ No newline at end of file diff --git a/TimeHACK.Main/Properties/Resources.Designer.cs b/TimeHACK.Main/Properties/Resources.Designer.cs index cbdc265..1ea1211 100644 --- a/TimeHACK.Main/Properties/Resources.Designer.cs +++ b/TimeHACK.Main/Properties/Resources.Designer.cs @@ -138,6 +138,16 @@ namespace TimeHACK.Properties { /// <summary> /// Looks up a localized resource of type System.Drawing.Bitmap. /// </summary> + internal static System.Drawing.Bitmap ButtonPattern { + get { + object obj = ResourceManager.GetObject("ButtonPattern", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> internal static System.Drawing.Bitmap DCTheme_BG { get { object obj = ResourceManager.GetObject("DCTheme_BG", resourceCulture); @@ -185,6 +195,56 @@ namespace TimeHACK.Properties { } /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap GTN95_Check { + get { + object obj = ResourceManager.GetObject("GTN95_Check", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap GTN95_CheckClicked { + get { + object obj = ResourceManager.GetObject("GTN95_CheckClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap GTN95_Higher { + get { + object obj = ResourceManager.GetObject("GTN95_Higher", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap GTN95_Restart { + get { + object obj = ResourceManager.GetObject("GTN95_Restart", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap GTN95_RestartClicked { + get { + object obj = ResourceManager.GetObject("GTN95_RestartClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// </summary> internal static System.Drawing.Icon Icon128x { diff --git a/TimeHACK.Main/Properties/Resources.resx b/TimeHACK.Main/Properties/Resources.resx index b86487a..3dfc2cd 100644 --- a/TimeHACK.Main/Properties/Resources.resx +++ b/TimeHACK.Main/Properties/Resources.resx @@ -792,6 +792,24 @@ <data name="IE3_SwirlyThings" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\IE3\IE3_SwirlyThings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="ButtonPattern" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\ButtonPattern.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="GTN95_Check" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\GuessTheNumber\GTN95_Check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="GTN95_CheckClicked" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\GuessTheNumber\GTN95_CheckClicked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="GTN95_Higher" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\GuessTheNumber\GTN95_Higher.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="GTN95_Restart" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\GuessTheNumber\GTN95_Restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="GTN95_RestartClicked" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\GuessTheNumber\GTN95_RestartClicked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> <data name="IE3_BackHover" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\IE3\IE3_BackHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> diff --git a/TimeHACK.Main/Resources/ButtonPattern.png b/TimeHACK.Main/Resources/ButtonPattern.png Binary files differnew file mode 100644 index 0000000..beb676d --- /dev/null +++ b/TimeHACK.Main/Resources/ButtonPattern.png diff --git a/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Check.png b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Check.png Binary files differnew file mode 100644 index 0000000..f522a01 --- /dev/null +++ b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Check.png diff --git a/TimeHACK.Main/Resources/GuessTheNumber/GTN95_CheckClicked.png b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_CheckClicked.png Binary files differnew file mode 100644 index 0000000..590b0aa --- /dev/null +++ b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_CheckClicked.png diff --git a/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Higher.png b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Higher.png Binary files differnew file mode 100644 index 0000000..6c059cf --- /dev/null +++ b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Higher.png diff --git a/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Restart.png b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Restart.png Binary files differnew file mode 100644 index 0000000..93bd9a6 --- /dev/null +++ b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_Restart.png diff --git a/TimeHACK.Main/Resources/GuessTheNumber/GTN95_RestartClicked.png b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_RestartClicked.png Binary files differnew file mode 100644 index 0000000..c70da96 --- /dev/null +++ b/TimeHACK.Main/Resources/GuessTheNumber/GTN95_RestartClicked.png diff --git a/TimeHACK.Main/TimeHACK.Main.csproj b/TimeHACK.Main/TimeHACK.Main.csproj index b70ee75..93748f1 100644 --- a/TimeHACK.Main/TimeHACK.Main.csproj +++ b/TimeHACK.Main/TimeHACK.Main.csproj @@ -138,6 +138,12 @@ <Compile Include="OS\Win2K\Win2KApps\SurviveTheDay.Designer.cs"> <DependentUpon>SurviveTheDay.cs</DependentUpon> </Compile> + <Compile Include="OS\Win95\Win95Apps\GuessTheNumber.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="OS\Win95\Win95Apps\GuessTheNumber.Designer.cs"> + <DependentUpon>GuessTheNumber.cs</DependentUpon> + </Compile> <Compile Include="OS\Win95\Win95Apps\IE4Sites\12padams1998.cs"> <SubType>UserControl</SubType> </Compile> @@ -362,6 +368,9 @@ <EmbeddedResource Include="OS\Win2K\Win2KApps\SurviveTheDay.resx"> <DependentUpon>SurviveTheDay.cs</DependentUpon> </EmbeddedResource> + <EmbeddedResource Include="OS\Win95\Win95Apps\GuessTheNumber.resx"> + <DependentUpon>GuessTheNumber.cs</DependentUpon> + </EmbeddedResource> <EmbeddedResource Include="OS\Win95\Win95Apps\IE4Sites\12padams1998.resx"> <DependentUpon>12padams1998.cs</DependentUpon> </EmbeddedResource> @@ -432,9 +441,6 @@ <EmbeddedResource Include="SaveDialogs\NewGameDialog.resx"> <DependentUpon>NewGameDialog.cs</DependentUpon> </EmbeddedResource> - <Compile Include="UI\IProgressBar.cs"> - <SubType>Component</SubType> - </Compile> <EmbeddedResource Include="OS\Win95\Win95.resx"> <DependentUpon>Win95.cs</DependentUpon> <SubType>Designer</SubType> @@ -526,6 +532,12 @@ <None Include="Resources\EndingPiracy.png" /> <None Include="Resources\AchievementMines.png" /> <None Include="Resources\distort1.wav" /> + <None Include="Resources\GuessTheNumber\GTN95_Check.png" /> + <None Include="Resources\GuessTheNumber\GTN95_CheckClicked.png" /> + <None Include="Resources\GuessTheNumber\GTN95_Higher.png" /> + <None Include="Resources\GuessTheNumber\GTN95_Restart.png" /> + <None Include="Resources\GuessTheNumber\GTN95_RestartClicked.png" /> + <None Include="Resources\ButtonPattern.png" /> <Content Include="Resources\Icon128x.ico" /> <None Include="Resources\ICTheme_BG.jpg" /> <None Include="Resources\IE3\IE3_SwirlyThings.png" /> diff --git a/TimeHACK.Main/UI/IProgressBar.cs b/TimeHACK.Main/UI/IProgressBar.cs deleted file mode 100644 index d16debf..0000000 --- a/TimeHACK.Main/UI/IProgressBar.cs +++ /dev/null @@ -1,234 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace TimeHACK.UI -{ - public class ProgressBar : Control - { - private Color _pColor = Color.DarkBlue; - private ProgressBarStyle _style = ProgressBarStyle.Continuous; - - private Timer RedrawTimer = null; - - public Color ProgressColor - { - get - { - return _pColor; - } - set - { - _pColor = value; Refresh(); - } - } - - - public ProgressBarStyle Style - { - get - { - return _style; - } - set - { - _style = value; Refresh(); - } - } - - - private double _max = 100.0; - private double _min = 0.0; - - public double Maximum - { - get - { - return _max; - } - set - { - _max = value; Refresh(); - } - } - public double Minimum - { - get - { - return _min; - } - set - { - _min = value; Refresh(); - } - } - - - private int _blockWidth = 14; - - public int BlockWidth - { - get - { - return _blockWidth; - } - set - { - _blockWidth = value; - Refresh(); - } - } - - private int _blockSpacing = 2; - - public int BlockSpacing - { - get - { - return _blockSpacing; - } - set - { - _blockSpacing = value; - Refresh(); - } - } - - public ProgressBar() : base() - { - MarqueeWidth = 125; - BlockWidth = 20; - BlockSpacing = 5; - Minimum = 0.00; - Maximum = 100.0; - Style = ProgressBarStyle.Continuous; - ProgressColor = Color.DarkBlue; - RedrawTimer = new Timer(); - RedrawTimer.Tick += (o, a) => - { - if (this.Style == ProgressBarStyle.Marquee) - { - if (_marqueePos >= this.Width) - _marqueePos = 0; - else - _marqueePos++; - this.Refresh(); - } - }; - RedrawTimer.Interval = 50; - } - - private double _value = 0.00; - - public double Value - { - get - { - return _value; - } - set - { - if (value < Minimum || value > Maximum) - throw new ArgumentOutOfRangeException("The value is outside the minimum and maximum range."); - this.Refresh(); - _value = value; - } - } - - private int _marqueeWidth = 14; - - public int MarqueeWidth - { - get - { - return _marqueeWidth; - } - set - { - _marqueeWidth = value; - Refresh(); - } - } - - private bool _showText = false; - - public bool ShowText - { - get - { - return _showText; - } - set - { - _showText = value; - Refresh(); - } - } - - protected override void OnVisibleChanged(EventArgs e) - { - if (Visible) - RedrawTimer.Start(); - else - RedrawTimer.Stop(); - } - - private int _marqueePos = 0; - - protected override void OnPaint(PaintEventArgs e) - { - base.OnPaint(e); - var g = e.Graphics; - g.Clear(BackColor); - //Stolen from the ShiftOS code :3 - switch (Style) - { - case ProgressBarStyle.Continuous: - double width = linear(this.Value, this.Minimum, this.Maximum, 0, this.Width); - g.FillRectangle(new SolidBrush(ProgressColor), new RectangleF(0, 0, (float)width, this.Height)); - break; - case ProgressBarStyle.Blocks: - int block_count = this.Width / (this.BlockWidth + this.BlockSpacing); - int blocks = (int)linear(this.Value, this.Minimum, this.Maximum, 0, block_count); - for (int i = 0; i < blocks - 1; i++) - { - int position = i * (BlockWidth + BlockSpacing); - g.FillRectangle(new SolidBrush(ProgressColor), new Rectangle(position, 0, BlockWidth, this.Height)); - } - break; - case ProgressBarStyle.Marquee: - g.FillRectangle(new SolidBrush(ProgressColor), new Rectangle(_marqueePos, 0, MarqueeWidth, this.Height)); - break; - } - if (ShowText) - { - var f = this.Font; - var t = this.Text; - var size = g.MeasureString(t, f); - var loc = new PointF( - (this.Width - size.Width) / 2, - (this.Height - size.Height) / 2 - ); - var color = this.ForeColor; - g.DrawString(t, f, new SolidBrush(color), loc); - } - - } - - ///<summary> - /// Simple linear interpolation algorithm. (http://stackoverflow.com/questions/12838007/c-sharp-linear-interpolation) - /// </summary> - private double linear(double x, double x0, double x1, double y0, double y1) - { - if ((x1 - x0) == 0) - { - return (y0 + y1) / 2; - } - return y0 + (x - x0) * (y1 - y0) / (x1 - x0); - } - } -} |
