Browse Source
fix possible issue loading stream rates fix tracker ranges add more ch6 options modify mag calib with throttlemaster
Michael Oborne
13 years ago
20 changed files with 2959 additions and 345 deletions
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
using System.Drawing; |
||||
using System.Drawing.Drawing2D; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace ArdupilotMega.Controls.BackstageView |
||||
{ |
||||
public class BackStageViewMenuPanel : Panel |
||||
{ |
||||
internal Color GradColor = Color.White; |
||||
internal Color PencilBorderColor = Color.White; |
||||
|
||||
private const int GradientWidth = 6; |
||||
|
||||
public BackStageViewMenuPanel() |
||||
{ |
||||
this.SetStyle(ControlStyles.UserPaint, true); |
||||
} |
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs pevent) |
||||
{ |
||||
base.OnPaintBackground(pevent); |
||||
|
||||
var rc = new Rectangle(ClientSize.Width - GradientWidth, 0, GradientWidth, this.ClientSize.Height); |
||||
|
||||
using (var brush = new LinearGradientBrush(rc, BackColor, GradColor, LinearGradientMode.Horizontal)) |
||||
{ |
||||
pevent.Graphics.FillRectangle(brush, rc); |
||||
} |
||||
|
||||
pevent.Graphics.DrawLine(new Pen(PencilBorderColor), Width-1,0,Width-1,Height); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
namespace ArdupilotMega.Controls.BackstageView |
||||
{ |
||||
partial class BackstageView |
||||
{ |
||||
/// <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.pnlPages = new System.Windows.Forms.Panel(); |
||||
this.pnlMenu = new BackStageViewMenuPanel(); |
||||
this.SuspendLayout(); |
||||
// |
||||
// pnlPages |
||||
// |
||||
this.pnlPages.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
||||
| System.Windows.Forms.AnchorStyles.Left) |
||||
| System.Windows.Forms.AnchorStyles.Right))); |
||||
this.pnlPages.Location = new System.Drawing.Point(147, 0); |
||||
this.pnlPages.MinimumSize = new System.Drawing.Size(100, 0); |
||||
this.pnlPages.Name = "pnlPages"; |
||||
this.pnlPages.Size = new System.Drawing.Size(243, 189); |
||||
this.pnlPages.TabIndex = 0; |
||||
// |
||||
// pnlMenu |
||||
// |
||||
this.pnlMenu.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
||||
| System.Windows.Forms.AnchorStyles.Left))); |
||||
this.pnlMenu.Location = new System.Drawing.Point(0, 0); |
||||
this.pnlMenu.Name = "pnlMenu"; |
||||
this.pnlMenu.Size = new System.Drawing.Size(150, 170); |
||||
this.pnlMenu.TabIndex = 1; |
||||
// |
||||
// BackstageView |
||||
// |
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); |
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
||||
this.AutoSize = true; |
||||
this.Controls.Add(this.pnlMenu); |
||||
this.Controls.Add(this.pnlPages); |
||||
this.Name = "BackstageView"; |
||||
this.Size = new System.Drawing.Size(393, 192); |
||||
this.ResumeLayout(false); |
||||
|
||||
} |
||||
|
||||
#endregion |
||||
|
||||
private System.Windows.Forms.Panel pnlPages; |
||||
private BackStageViewMenuPanel pnlMenu; |
||||
} |
||||
} |
@ -0,0 +1,225 @@
@@ -0,0 +1,225 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.ComponentModel; |
||||
using System.Drawing; |
||||
using System.Linq; |
||||
using System.Windows.Forms; |
||||
using ArdupilotMega.Controls.BackstageView; |
||||
|
||||
namespace ArdupilotMega.Controls.BackstageView |
||||
{ |
||||
public partial class BackstageView : UserControl |
||||
{ |
||||
private Color _buttonsAreaBgColor = Color.White; |
||||
private Color _buttonsAreaPencilColor = Color.DarkGray; |
||||
private Color _selectedTextColor = Color.White; |
||||
private Color _unSelectedTextColor = Color.Gray; |
||||
private Color _highlightColor1 = Color.DarkBlue; |
||||
private Color _highlightColor2 = Color.Blue; |
||||
|
||||
private readonly List<BackstageViewPage> _pages= new List<BackstageViewPage>(); |
||||
private BackstageViewPage _activePage; |
||||
private const int ButtonSpacing = 30; |
||||
private const int ButtonHeight = 30; |
||||
|
||||
public BackstageView() |
||||
{ |
||||
InitializeComponent(); |
||||
|
||||
this.pnlMenu.Height = this.Height; |
||||
this.pnlPages.Height = this.Height; |
||||
|
||||
pnlMenu.BackColor = _buttonsAreaBgColor; |
||||
pnlMenu.PencilBorderColor = _buttonsAreaPencilColor; |
||||
pnlMenu.GradColor = this.BackColor; |
||||
} |
||||
|
||||
|
||||
public override Color BackColor |
||||
{ |
||||
get |
||||
{ |
||||
return base.BackColor; |
||||
} |
||||
set |
||||
{ |
||||
base.BackColor = value; |
||||
UpdateButtons(); |
||||
pnlMenu.GradColor = this.BackColor; |
||||
} |
||||
} |
||||
|
||||
[Description("Background pencil line color for the content region"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color),"DarkGray")] |
||||
public Color ButtonsAreaPencilColor |
||||
{ |
||||
get { return _buttonsAreaPencilColor; } |
||||
set |
||||
{ |
||||
_buttonsAreaPencilColor = value; |
||||
pnlMenu.PencilBorderColor = _buttonsAreaPencilColor; |
||||
pnlMenu.Invalidate(); |
||||
UpdateButtons(); |
||||
Invalidate(); |
||||
} |
||||
} |
||||
|
||||
|
||||
[Description("Background color for the buttons region"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color),"White")] |
||||
public Color ButtonsAreaBgColor |
||||
{ |
||||
get { return _buttonsAreaBgColor; } |
||||
set |
||||
{ |
||||
_buttonsAreaBgColor = value; |
||||
this.pnlMenu.BackColor = _buttonsAreaBgColor; |
||||
pnlMenu.Invalidate(); |
||||
Invalidate(); |
||||
} |
||||
} |
||||
|
||||
[Description("Color for the selector buttons text"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color), "White")] |
||||
public Color SelectedTextColor |
||||
{ |
||||
get { return _selectedTextColor; } |
||||
set |
||||
{ |
||||
_selectedTextColor = value; |
||||
UpdateButtons(); |
||||
} |
||||
} |
||||
|
||||
[Description("Color for the un selected selector buttons text"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color), "Gray")] |
||||
public Color UnSelectedTextColor |
||||
{ |
||||
get { return _unSelectedTextColor; } |
||||
set |
||||
{ |
||||
_unSelectedTextColor = value; |
||||
UpdateButtons(); |
||||
Invalidate(); |
||||
} |
||||
} |
||||
|
||||
[Description("Color selected button background 1"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color), "DarkBlue")] |
||||
public Color HighlightColor1 |
||||
{ |
||||
get { return _highlightColor1; } |
||||
set |
||||
{ |
||||
_highlightColor1 = value; |
||||
UpdateButtons(); |
||||
Invalidate(); |
||||
} |
||||
} |
||||
|
||||
[Description("Color selected button background 2"), Category("Appearance")] |
||||
[DefaultValue(typeof(Color), "Blue")] |
||||
public Color HighlightColor2 |
||||
{ |
||||
get { return _highlightColor2; } |
||||
set |
||||
{ |
||||
_highlightColor2 = value; |
||||
UpdateButtons(); |
||||
Invalidate(); |
||||
} |
||||
} |
||||
|
||||
|
||||
private void UpdateButtons() |
||||
{ |
||||
foreach (var backstageViewButton in pnlMenu.Controls.OfType<BackstageViewButton>()) |
||||
{ |
||||
backstageViewButton.HighlightColor2 = _highlightColor2; |
||||
backstageViewButton.HighlightColor1 = _highlightColor1; |
||||
backstageViewButton.UnSelectedTextColor = _unSelectedTextColor; |
||||
backstageViewButton.SelectedTextColor = _selectedTextColor; |
||||
backstageViewButton.ContentPageColor = this.BackColor; |
||||
backstageViewButton.PencilBorderColor = _buttonsAreaPencilColor; |
||||
|
||||
backstageViewButton.Invalidate(); |
||||
} |
||||
} |
||||
|
||||
public void AddPage(BackstageViewPage page) |
||||
{ |
||||
page.Page.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; |
||||
page.Page.Location = new Point(pnlMenu.Width, 0); |
||||
page.Page.Dock = DockStyle.Fill; |
||||
|
||||
_pages.Add(page); |
||||
CreateLinkButton(page); |
||||
this.pnlPages.Controls.Add(page.Page); |
||||
|
||||
if (_activePage == null) |
||||
_activePage = page; |
||||
|
||||
ActivatePage(page); |
||||
// Todo: set the link button to be selected looking |
||||
} |
||||
|
||||
private void CreateLinkButton(BackstageViewPage page) |
||||
{ |
||||
var lnkButton = new BackstageViewButton |
||||
{ |
||||
Text = page.LinkText, |
||||
Tag = page, |
||||
Top = _pages.IndexOf(page) * ButtonSpacing, |
||||
Width = this.pnlMenu.Width, |
||||
Height = ButtonHeight, |
||||
ContentPageColor = this.BackColor, |
||||
PencilBorderColor = _buttonsAreaPencilColor, |
||||
SelectedTextColor = _selectedTextColor, |
||||
UnSelectedTextColor = _unSelectedTextColor, |
||||
HighlightColor1 = _highlightColor1, |
||||
HighlightColor2 = _highlightColor2 |
||||
}; |
||||
|
||||
pnlMenu.Controls.Add(lnkButton); |
||||
lnkButton.Click += this.ButtonClick; |
||||
} |
||||
|
||||
|
||||
private void ButtonClick(object sender, EventArgs e) |
||||
{ |
||||
var backstageViewButton = ((BackstageViewButton) sender); |
||||
var associatedPage = backstageViewButton.Tag as BackstageViewPage; |
||||
this.ActivatePage(associatedPage); |
||||
} |
||||
|
||||
private void ActivatePage(BackstageViewPage associatedPage) |
||||
{ |
||||
// deactivate the old page |
||||
_activePage.Page.Visible = false; |
||||
var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage); |
||||
oldButton.IsSelected = false; |
||||
|
||||
associatedPage.Page.Visible = true; |
||||
var newButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == associatedPage); |
||||
newButton.IsSelected = true; |
||||
|
||||
_activePage = associatedPage; |
||||
} |
||||
|
||||
|
||||
public class BackstageViewPage |
||||
{ |
||||
public BackstageViewPage(Control page, string linkText) |
||||
{ |
||||
Page = page; |
||||
LinkText = linkText; |
||||
} |
||||
|
||||
public Control Page { get; private set; } |
||||
public string LinkText { get; set; } |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,120 @@
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
<resheader name="writer"> |
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
</root> |
@ -0,0 +1,150 @@
@@ -0,0 +1,150 @@
|
||||
using System; |
||||
using System.Drawing; |
||||
using System.Drawing.Drawing2D; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace ArdupilotMega.Controls.BackstageView |
||||
{ |
||||
public class BackstageViewButton : Control |
||||
{ |
||||
private bool _isSelected; |
||||
|
||||
internal Color ContentPageColor = Color.Gray; |
||||
internal Color PencilBorderColor = Color.White; |
||||
internal Color SelectedTextColor = Color.White; |
||||
internal Color UnSelectedTextColor = Color.Gray; |
||||
internal Color HighlightColor1 = Color.DarkBlue; |
||||
internal Color HighlightColor2 = Color.Blue; |
||||
private bool _isMouseOver; |
||||
|
||||
//internal Color HighlightColor1 = Color.FromArgb(0x94, 0xc1, 0x1f); |
||||
//internal Color HighlightColor2 = Color.FromArgb(0xcd, 0xe2, 0x96); |
||||
|
||||
public BackstageViewButton() |
||||
{ |
||||
SetStyle(ControlStyles.SupportsTransparentBackColor, true); |
||||
SetStyle(ControlStyles.Opaque, true); |
||||
SetStyle(ControlStyles.ResizeRedraw, true); |
||||
this.BackColor = Color.Transparent; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Whether this button should show the selected style |
||||
/// </summary> |
||||
public bool IsSelected |
||||
{ |
||||
get { return _isSelected; } |
||||
set |
||||
{ |
||||
if (_isSelected != value) |
||||
{ |
||||
_isSelected = value; |
||||
//this.Parent.Refresh(); // <-- brutal, but works |
||||
|
||||
|
||||
InvalidateParentForBackground(); |
||||
|
||||
this.Invalidate(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Must be a better way to redraw parent control in the area of |
||||
// the button |
||||
private void InvalidateParentForBackground() |
||||
{ |
||||
var screenrect = this.RectangleToScreen(this.ClientRectangle); |
||||
var rectangleToClient = this.Parent.RectangleToClient(screenrect); |
||||
this.Parent.Invalidate(rectangleToClient); |
||||
} |
||||
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pevent) |
||||
{ |
||||
Graphics g = pevent.Graphics; |
||||
|
||||
|
||||
// Now the little 'arrow' thingy if we are selected and the selected bg grad |
||||
if (_isSelected) |
||||
{ |
||||
var rect1 = new Rectangle(0, 0, Width / 2, Height); |
||||
var rect2 = new Rectangle(Width / 2, 0, Width, Height); |
||||
|
||||
g.FillRectangle(new LinearGradientBrush(rect1, HighlightColor1, HighlightColor2, LinearGradientMode.Horizontal), rect1); |
||||
g.FillRectangle(new LinearGradientBrush(rect2, HighlightColor2, HighlightColor1, LinearGradientMode.Horizontal), rect2); |
||||
|
||||
var butPen = new Pen(HighlightColor1); |
||||
g.DrawLine(butPen, 0, 0, Width, 0); |
||||
g.DrawLine(butPen, 0, Height - 1, Width, Height - 1); |
||||
|
||||
var arrowBrush = new SolidBrush(this.ContentPageColor); |
||||
|
||||
var midheight = Height / 2; |
||||
var arSize = 8; |
||||
|
||||
var arrowPoints = new[] |
||||
{ |
||||
new Point(Width, midheight + arSize), |
||||
new Point(Width - arSize, midheight), |
||||
new Point(Width, midheight - arSize) |
||||
}; |
||||
|
||||
g.DrawString(Text, new Font(FontFamily.GenericSansSerif, 10), new SolidBrush(SelectedTextColor), 20, 6); |
||||
|
||||
g.FillPolygon(arrowBrush, arrowPoints); |
||||
|
||||
var pencilBrush = new Pen(this.PencilBorderColor); |
||||
|
||||
|
||||
g.DrawPolygon(pencilBrush, arrowPoints); |
||||
|
||||
|
||||
} |
||||
else |
||||
{ |
||||
if (_isMouseOver) |
||||
{ |
||||
var brush = new SolidBrush(Color.FromArgb(10, 0xA0, 0xA0, 0xA0)); |
||||
|
||||
g.FillRectangle(brush, this.ClientRectangle); |
||||
|
||||
var butPen = new Pen(PencilBorderColor); |
||||
g.DrawLine(butPen, 0, 0, Width, 0); |
||||
g.DrawLine(butPen, 0, Height - 1, Width, Height - 1); |
||||
} |
||||
|
||||
g.DrawString(Text, new Font(FontFamily.GenericSansSerif, 10), new SolidBrush(this.UnSelectedTextColor), 20, 6); |
||||
} |
||||
} |
||||
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e) |
||||
{ |
||||
_isMouseOver = true; |
||||
base.OnMouseEnter(e); |
||||
InvalidateParentForBackground(); |
||||
this.Invalidate(); |
||||
} |
||||
|
||||
protected override void OnMouseLeave(EventArgs e) |
||||
{ |
||||
_isMouseOver = false; |
||||
base.OnMouseLeave(e); |
||||
InvalidateParentForBackground(); |
||||
this.Invalidate(); |
||||
|
||||
} |
||||
|
||||
// This IS necessary for transparency |
||||
protected override CreateParams CreateParams |
||||
{ |
||||
get |
||||
{ |
||||
const int WS_EX_TRANSPARENT = 0x20; |
||||
CreateParams cp = base.CreateParams; |
||||
cp.ExStyle |= WS_EX_TRANSPARENT; |
||||
return cp; |
||||
} |
||||
} |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in new issue