mirror of
https://github.com/mastercodeon314/KsDumper-11.git
synced 2024-11-23 22:41:06 +01:00
Main upload
This commit is contained in:
parent
8a58155a34
commit
a4212e042b
100
DarkControls/BlankForm.Designer.cs
generated
Normal file
100
DarkControls/BlankForm.Designer.cs
generated
Normal file
@ -0,0 +1,100 @@
|
||||
namespace DarkControls
|
||||
{
|
||||
partial class BlankForm
|
||||
{
|
||||
/// <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 Windows Form 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()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BlankForm));
|
||||
this.transparentLabel1 = new DarkControls.Controls.TransparentLabel();
|
||||
this.closeBtn = new DarkControls.Controls.WindowsDefaultTitleBarButton();
|
||||
this.appIcon1 = new DarkControls.Controls.AppIcon();
|
||||
((System.ComponentModel.ISupportInitialize)(this.appIcon1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// transparentLabel1
|
||||
//
|
||||
this.transparentLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.transparentLabel1.Location = new System.Drawing.Point(32, 4);
|
||||
this.transparentLabel1.Name = "transparentLabel1";
|
||||
this.transparentLabel1.Size = new System.Drawing.Size(108, 20);
|
||||
this.transparentLabel1.TabIndex = 8;
|
||||
this.transparentLabel1.Text = "Form1";
|
||||
//
|
||||
// closeBtn
|
||||
//
|
||||
this.closeBtn.ButtonType = DarkControls.Controls.WindowsDefaultTitleBarButton.Type.Close;
|
||||
this.closeBtn.ClickColor = System.Drawing.Color.Red;
|
||||
this.closeBtn.ClickIconColor = System.Drawing.Color.Black;
|
||||
this.closeBtn.HoverColor = System.Drawing.Color.OrangeRed;
|
||||
this.closeBtn.HoverIconColor = System.Drawing.Color.Black;
|
||||
this.closeBtn.IconColor = System.Drawing.Color.Black;
|
||||
this.closeBtn.IconLineThickness = 2;
|
||||
this.closeBtn.Location = new System.Drawing.Point(776, 0);
|
||||
this.closeBtn.Name = "closeBtn";
|
||||
this.closeBtn.Size = new System.Drawing.Size(40, 40);
|
||||
this.closeBtn.TabIndex = 7;
|
||||
this.closeBtn.Text = "windowsDefaultTitleBarButton1";
|
||||
this.closeBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// appIcon1
|
||||
//
|
||||
this.appIcon1.AppIconImage = ((System.Drawing.Image)(resources.GetObject("appIcon1.AppIconImage")));
|
||||
this.appIcon1.Image = ((System.Drawing.Image)(resources.GetObject("appIcon1.Image")));
|
||||
this.appIcon1.Location = new System.Drawing.Point(0, 1);
|
||||
this.appIcon1.Name = "appIcon1";
|
||||
this.appIcon1.Scale = 3.5F;
|
||||
this.appIcon1.Size = new System.Drawing.Size(28, 28);
|
||||
this.appIcon1.TabIndex = 9;
|
||||
this.appIcon1.TabStop = false;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
|
||||
this.ClientSize = new System.Drawing.Size(816, 489);
|
||||
this.Controls.Add(this.appIcon1);
|
||||
this.Controls.Add(this.transparentLabel1);
|
||||
this.Controls.Add(this.closeBtn);
|
||||
this.DoubleBuffered = true;
|
||||
this.ForeColor = System.Drawing.Color.Silver;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "Form1";
|
||||
this.Text = "Basic File Box";
|
||||
((System.ComponentModel.ISupportInitialize)(this.appIcon1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private DarkControls.Controls.WindowsDefaultTitleBarButton closeBtn;
|
||||
private DarkControls.Controls.TransparentLabel transparentLabel1;
|
||||
private DarkControls.Controls.AppIcon appIcon1;
|
||||
}
|
||||
}
|
||||
|
48
DarkControls/BlankForm.cs
Normal file
48
DarkControls/BlankForm.cs
Normal file
@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Diagnostics;
|
||||
using DarkControls;
|
||||
|
||||
namespace DarkControls
|
||||
{
|
||||
public partial class BlankForm : Form
|
||||
{
|
||||
protected override CreateParams CreateParams
|
||||
{
|
||||
get
|
||||
{
|
||||
// Activate double buffering at the form level. All child controls will be double buffered as well.
|
||||
CreateParams cp = base.CreateParams;
|
||||
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
|
||||
public BlankForm()
|
||||
{
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
this.Region = Region.FromHrgn(Utils.CreateRoundRectRgn(0, 0, Width, Height, 10, 10));
|
||||
this.closeBtn.Region = Region.FromHrgn(Utils.CreateRoundRectRgn(0, 0, closeBtn.Width, closeBtn.Height, 10, 10));
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
base.WndProc(ref m);
|
||||
if (m.Msg == Utils.WM_NCHITTEST)
|
||||
m.Result = (IntPtr)(Utils.HT_CAPTION);
|
||||
}
|
||||
}
|
||||
}
|
239
DarkControls/BlankForm.resx
Normal file
239
DarkControls/BlankForm.resx
Normal file
@ -0,0 +1,239 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="appIcon1.AppIconImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
EQAACxEBf2RfkQAAFCZJREFUeF7tXQl0lFWaDTraYzvTdJ8ZbRfEFpFNNgk7gSAECFsgQBaSACKLEPal
|
||||
XRuxu1EYQA5JUeACsp2wJOyETTAhUaGitEoGgTmSEefM6T5OZ0bbdoOq4s79Ku9V3v+nQqUSSALWPeee
|
||||
1P+++33ve+/W++tPHYMRYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEETrunYZ+98/AlvtmoIg/998/
|
||||
HZMiJ+M2Fa4ztFqI2++ficnsK1d6I7Pum44YFb4JsRC3PDANjgemAwF44r5p+BelrHXI3NKDrSfNTOld
|
||||
SW8WoEHjaVj94DSgMjZOxyf3Tsa/qoRaQ+Op+NWD6fgwUE+a7H3dDW1Kkylo/VA6nm8yFZvIdU3SsY+E
|
||||
wQ9+k44x1Gy0jE/Fxy1q8aTIXDKnrYdN0htff2AZlzXIWhiXtT2cjkdVmfqLZnyHN52KveQVEoH48FQU
|
||||
tkrHP6mUCF4vtsSn1I4pMofMZZl7KpaocETbebiT8QIzbuOVplOwR9asUuoXWj6FR5o9hYvNpwBXYYFp
|
||||
hkbzp7DYonvq+poitWUO25x+MzTapuFOxgosOhtlzbJ2lVI/0GwiHmo5Gf/NxlAZWzwV2AwNahbb9NfF
|
||||
FKkptc25yApmaIgp0rtNbyXXLnugUuoWXefgjkcn42MSlXLS1c3QoHaxLfdkqwTcrsI1RtMZ+Blruixz
|
||||
TKrcDA0xRdZgybNzEj56cBz+UaXUHdpOxNy2k4BKObFqZmi0mYjFZn6bSUhXoRqDtaeZtcmgZmiIKbIW
|
||||
W76FrD9byesO7SfiPIlAbBeiGRrtJ2C9UeNtNVxjsNYxo7+31HCVIabImowaFrabgHNKWjfonIpfdJiA
|
||||
KyQCsFpmCLi4UUadT9RwjdHhSZzWdWUONRwSxBTmF+g6Nl7p/iT+WUlrH49NQNNOTwJ2dhxffTPkM4P5
|
||||
eUat3SpUY7DeHl2303jky2eKCoUEMUXW6K9lMHIsHlay2kdUCn7V5QnAxoLoapoRyw3qMg77zXqdxiJe
|
||||
hWsM1h5p1iZzZU4VDgliCvMLbPUge6IktQP5IpALi+w6DlO6jsWBbuMATY4VSKNKGhJkY1gv16zXbSwO
|
||||
qfA1Ahqwx8PmHDJnTUyRNdvqHZC9kT26Ll+aRo1Hkx5jMbbHGGSQ70WNxfckAvDd6t4/5TYVNQZ7A9S8
|
||||
1CMNQ5Wsxug5BgO4hh/s83DsUHQ1H1m56T9n73n2mj6OwWXu3afkJnJWFE0K6Tuxnml4qFcqEnuNwbJe
|
||||
aThOfsPXCEpq+9XgZLBGrq3mFf2aPf1A9lHyaiMqFX1Z58dAcyhW+6TI2n37Za0XmLKnZdplstey56pM
|
||||
GTjYqXca9pN/JVEVRqfiR9LVOxWO3ilIio7GP6hyIUE2IDoNubbaO6LHIIrjXxtjX8byiU6lhQzJZa//
|
||||
468ntVPQg69z9Jgar7YpsgeyF749ScNJ/vzBrB2Esvf7ue6OEX1SUdw3Fagq+6Rg8bW4N8bG4meslWur
|
||||
vUPXZoNdeP2dP5aKNF9iNdA3DWONOb6V2jIum9g3BTk6puK50psvsQaQdbDWYrN2MIoXEf1ScJiE5oBU
|
||||
uGc+fwULVnqxZIsXC7Z5LnC81NC4Y5KRqOatFmTBrJNr1BT6zdCIGY1tOs7XL6rhkBGTgoX+OinYqoZ9
|
||||
EFNYO0fHFWtsiuwR67h1zf6p+Gp5lqf0tQ0eLF3mxdNPX/HttY4rHooYlIB7BozG2djRgOb8p715b+93
|
||||
Y8dhD9a/48Efd3lKYmmKoXEPqKYpslDm5xq1EJtc0QzeZhqxr78YmidVKGSw9wm6jtTsn4QHVMgHMYXj
|
||||
Of65ylhtU2RvmO/210rBV5nbPV/tPejG8T1ufJTjxgvzvYX+OCkeiBe+AvJiYDIHkgHNZ2jKsX1u7Drk
|
||||
wUaasminp2TQaJQaGjcZkimywIFJyDVqYFBSRTNkwxi7YOoGp6CJCoeM2CQ8bNYiLwQyhb3kmDrpNVRT
|
||||
mJdIyt74arDvrzO2e74VM/L3lpnxO5qh40Lf3mszNOLTcPfgRJwZkgRoPjvfm5/HIlJs8zEPlux0lwxJ
|
||||
xpc6PjgJHuakqhJXRQIfbYckYq9Zn/kBTwbHPzN1iqe4uJB/6YpJQEPO66pQLxEXhyXhN0rmA3u8levJ
|
||||
sumq/Eg8OBmjmOPWuXGjvX/jyfhxD9/UYsafaMbC+d7j/tok13o+Lhn3qRJWxMfj7mEJODMsEdB8fq43
|
||||
X47ZfpqSdZT3vxx3CRfypY7HJcJDXtUUMYPavTrHl5eAHZNtZnD+Rox9ZupMcp6QTOG8DbkeV6BaQtYL
|
||||
aArHs2zaoKZwPaOoc+uc4aPxzcpst0fMkDe1mPEHmqHjipWbocGG7okfhbPxCYDm7+Z58wppyoEDbmx9
|
||||
m6Zke0riE1FqaNzDEwLfvmSBjO83tGD9CmZwYx7g+AVTx5pz+dNhjpEu2WiVVilEQ22Rmct6mapmeT3O
|
||||
KXOrNB/k9kVdjqnjda6sRUksYCyRGrfWjhiNv/M2dWW3MuMUzXhpnrdQx33kHsteqxJXhwhHjsTZkaMA
|
||||
zYVzvXnv7XbjUK4b24948Op2TwnHSw2NmzkVTOHkcYYGI0bhSCAzmHvB1PF6TlkUDfjaYcZY46qmSGzE
|
||||
SBSZOayRKbUkLrVtsYCmSK823TAV9oNjiYy5tSYhCd9mZnt9n73v8DP41A6eDJrhr1FWp+pmaMjtK2EE
|
||||
ziSOBGcs40uzvfkndrlxhE9gOTQlY5u7JHEUvvRrRsDDa8vti2NLzBqs+bfEeHRV4YikYXgggRti0zyr
|
||||
wgpoQE2mqWHdUykBbl9iBvNdppbXr2kzNNjDbFNDXmQv/tsX60Qy7/8sGq5FhX1IiMcojrt1fHQyvveZ
|
||||
wadTeSD6kGa8Mtd73J9fVuN8clyQ21RlEBeTR+AsCc0/zvbmuXa6cZSm7OTEGVs9JRwvNTTuZOOkJMfj
|
||||
mBErYzy+ThrOW+gI9OD1BVtMnQw70IAxh6lNireeFHmdNAJFFs2I8pNhB2NzTS15QXoaPQLDpUdbTGq9
|
||||
o1IjZI0cc+tYShJ+yMzx+vZEzPiAZiya6y3UccXQT4YdUiAlHmdJaC6a5c2TCeVIyn3SscVTwvFSQ+NO
|
||||
Hi6moEHKcHxtjF8xXlfg6HgUVrZ5ZWA9mmLL85ki5OsiS2x45WaUwVfvXUtORZb3zLUsXIhbZG28duvx
|
||||
Mcm4lKHMOKrMeGWOt9CfV8aam6ExjoXShuHsmOGcXHExTZH7ozzOyWPxappCTamhcY8ZhgX+62HwpHIh
|
||||
/Pm9oanIYVgVbBOpcdjyXJy7yBxLq4IZ1DjNnApkr6pnjzEma3Lr63GJuCy3KfklWswo4t1jCc3w60nZ
|
||||
O9lDNfG1wbhBuGdcHAsPYxOKS2Z68+QXnQJ5LOYT2JosTwk1pabGzzj8u9QZH492Y+Owj2Pfcux7/jzK
|
||||
n6dM7dgqmEKdw8wxyfyMoPlxcNpyPmBfx1RP35J7xw5FW1FL76ZWczwfc7UZ8s2GmLF0lrfQopM94975
|
||||
pr3WkMJPDMXZ8XFsRnEpTfkk2413+QQmj8Wvb/aUcLzU1AifiMN6VaYCJvN2w7oui35ocFOoWWPmqLyg
|
||||
ZlDntOTE4URqbOXfJkvvpl44kb8UZ9AMebgRM+RzdRnNMDWyV9fNDI0pfPqaMARnJg5lU4pLp3vzi7e7
|
||||
8b56LH4ry3NhYhy+NDUThmKqKhEQsiGse9KW80ZlmysmUu8y9WSFpykr0GDiEDhsOVc1QzBpCNLNnMkJ
|
||||
Xq98gGfTDHniFDNW8gnU1HCe809W92kqVKTT9cmDcW7yEDanuHy6N+/MNjdOqsfitevd/2nGuahOKr1S
|
||||
TI5BQ2pdlrzBFU8KbwW/ZL0iU8d+gp4MapxmDmufmBHEDIH0buZlbC8z4zDXKetdPsObb8Zlb2SPVHrt
|
||||
YEo/3D1lEM5MHQxorpjmPf4pTZF7ac5bHv/41EG4xIVX6Us62SDmnPTnkpzHf1LEtCmD4TLjZNCTwR4c
|
||||
lpxBVTNDwKej2znnjzp33WYvDvNOIGZkzvTmW+oOxvlptXUy7BBTptEUEporpnrzxZSsl73+MfIDlVIl
|
||||
yEYx56SRL3xjFk/GtIFwWcYHBjeDOoeZkz6w6mZo8B3/oc5/fakX8gvyKpph1iXrzgwNOZozBuIcCc3M
|
||||
dG/e6lle/zXpVPIqQ07C9Fi4jBrg9V/NazLobYoapy0nZDMEZp2Vc7x02FuorxVr/zZVGeazkVmxODc7
|
||||
FtCcOxCX9es5/TFeSUPCMzRl9gC4zLoGg5oxawCctpxqmSGQNeg6cweVr00oa5c9UNL6AWlozgCcmzuA
|
||||
Dds4rx9aK1nImBmDxtyMS5aa/YObQY3TlvPdzD74tRKEDFmDpZ6irLnemaHBpu8mz8zvDxj8Oz8UA35t
|
||||
HQxyQpjvMuvN6x/8M2N+PzjMHIMF6dHV+68q5SsTru0bsx6vz/82po4/M4JhfjTueToG557pB/gYgzwV
|
||||
CgliBlnkr1NWK+jJoMZpy/lfy3U/HFs4BD9XCSGBtfJ0HVmjrFWF6jek0ef6ouDZvvgvNt9LDVcZXHjD
|
||||
Z2nGczGAwaBmUOO05ZxYGI1fstZGc5x9VcsU5kbLmsjjN4wZNYWY8XxfuF7oC2jyOuhtijqHmfNCH5qh
|
||||
PsDldvN8H2ww46xZQLOqdfv6yUDMeLEPXCQ0Fzwe3IwXH4fDzOG13wwNMYW1Npi6BX3CplSKJTRj4eNw
|
||||
vfQ4oMnr13AVMyT2Um84LDm9K5qhIaaw5gZTz/ywKXaIGb+PRtEfegN+RiMjmBnUOC055O97Y6mSBISY
|
||||
wrk2WvKiq/9Bf9NBzFjUC66XowHNRdHBT8bLveAwcyzsFcSUCNzCOTbY8sInRcx4pReKFvcC/OwZ/GRQ
|
||||
4zRzXumJk2SxOUbNIpUSEGIKczZacnrxpET+RE+KmLE0CkVLewKa/1YFM6hzWnKicCKjM37xchTuYr1i
|
||||
S6wKplCz0cwhf3qmiBnLe8C1PAowuSwK23jbCPi3JmIGNQ5bjs8MJYnIoCmse9qi6VH57Ss7Abdyzo0W
|
||||
fVlOwaqfyu1rSSQavtodrhU9gEpYwRQxY0V3OEzdqz2sZmiIKax/2tSSFUwRM1hzo03nJ+vf/Ka8TjNW
|
||||
dkdRRndAk9eryKPG9cUVPXGvSvGZwXGnjvvYLbAZGmIK6xSbOSu7WW9fqzrhHo5/7o+zB3KTvlY8xp5v
|
||||
ztuXmJHZDS5HN8Cg72nq1a64g6+POrrii9VR5X92IDGOOww9Mrte3QwNMYXznTZzSctJWdkDjVmvhCxY
|
||||
1hZ3ymcKczZYcrqi8KY7KWLGqi4ocnYFDP5lbffyv9oVU5wdy//7WjFjVVc4LTldqmaGhpjCnGKzBmta
|
||||
TgrrNZK51aWvV+pKzRzWuHlOiixwTWe4XusCVGBnvGeaoiFmMO4wtWtCNENjHU3hPKdttQJ+0G/iKaE2
|
||||
39QavPFPipjxemcUvdEZ0OT1GfOazFJyH8QMjjltmmqZobGuPe56oxOKbTUrPBJzLMumuWC7vnFPipjx
|
||||
Zie41nYCDL4m92mOO9X1F+s6Wj8zOOZQMR/f7IgTm2tghoaYsrYjTltqd7KeFPbcmGMlat618rTHnA1m
|
||||
Dq8LV7W6wU6KmPFWRxSt7who8nqtbLjE5SevF63vUv6f/8vY+kg4LTmR18YMDTGFdYstc7APFfZBepIx
|
||||
3au8gdjHVktO5A10UsSMDZFwbYwETHLs4vp21j8f05DFb+wAh01/Tc3QEFNY/7Rtrkp/eWQPjRj/zNSr
|
||||
nMLs+n5SsmnG5sfg2twBCMRNHSqaImYw5rBpr4sZGmIK5zhtzrnpsYqmbG6DRox9ZupMMqf+miJmbHkM
|
||||
RSQ0s9ojc0t7zPOPtcfFrYYhYgbHnf54mea6mqGRTVM4V7FtbsvtS3rNegyf63hWO/yWa9pk5vD62L76
|
||||
dvsSM7a1h4uE5tb25V+hb2mHOVzcF1ltrB/g1DksOe1qxwwNMWVbO5w2eyAtJ4Vra8yxEvI5uZbPFPa5
|
||||
wdAL689JYSO3Z7dDYU47wGCmNkNjT/Py3zckltMWTktO29o1Q0NM4fzFtl4sJ8W+2fI9GHWbLDntsFfM
|
||||
UpK6w842eGlnW0BzR5uKZpiQ2A6aYcmpIzM0xBT2UGz2RFb4PcWEmMK1bzJzWGOCCtcN+ER1267W+Gp3
|
||||
G0C4iw3Khq9+93Lk6uPuP68ucH++5nj5v/osMeqdWq944mDTujNDQ0xhb8WW3lpbTXnjKJq9mef+fG2e
|
||||
+89vHbvUQUyh5pCh9/2VWJ1hT0t02dcaULwknyUyvvug+1X5Y1DhroMe3584ixl7aYahx95H64cZGgdp
|
||||
yr5HUWzp0TDlwP7Lzx3MdUNxuYzlPoqWpn5Xi7r7325EsPmhbAjC/a1wXg1HnNx1OerkzsvfnNh5ufT9
|
||||
nZdaixmMO7XWx1b1ywwNMYW9Fpu98tpnyp9yLrX9ePvl0o+2X/7m422Xe8iYfG4w7tZamtJCxusEB1sh
|
||||
ioTi9/kPlv97IGeycfup13GbmHGAZhg68LpemqHB3u5in8W2nn2myJpkbT4hwVgrU3e0Lk/IiUa440gL
|
||||
fHekJaDoO8Ya2RG4lfHVRlxYr83QEFMOt0SxrfclsiYliZA3IDVHdFz0KlR34DtiJSnvDB/fboFD5ERy
|
||||
Oq8/tMSa3xhmaIgp7LvYXAMpa1pALuJ6/sMYx9Hm1f9H1q4ZZIPfaY5PSVyVzW4sMzQKaQr7P11hPTYe
|
||||
a4499eL3EMGxh/Dr481wnEQl3HKkbfX+Gdn6gKNN0PD4I9gdYF3IbwYvf67hm63G/3DmNYV8ePPdNITc
|
||||
UPgI3ufPwoJHsLqwGXxPIzcDCh5Gd65pBbmfa9xb0BQv5zep/l+HhRFGGGGEEUYYYYQRRhhhhBFGGGGE
|
||||
EUYYYYRxcyIi4v8Bgkd5YGjdFSgAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="appIcon1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAACxEAAAsRAX9kX5EAAASJSURBVEhL7ZVrUJRVGMdfK7WaJhomMvvApQkhLnKHhQV2
|
||||
WWFZYDF2YRWWkOW2EkoiQQVoENhFRYRABBHiXojg1BgOiMOUM6iTOCjkNFLhTE3f+NQ0xVD/p3N2jlAw
|
||||
CNjUJ39f9jn///95zp5333df6SH/OzYF9LwoV2Qt2SW8+DocHfbgiH0hJuxy0CYRrRPWUpjHMzzrkIOj
|
||||
vFc4K2OXSo87Z6PTNZ/IMRvDTrvJ3nE3upyy0e9ioA0iNo9LKW3gniXDs6yH9/IZfJaILY97JrICi4g8
|
||||
zBjQ5GKjkCW3DFz0yMBesZyHa26ZuCiWkkaDjbyXz3BPR5aQl2KjoKeC0xAQaMLNQDbAbKb1wpKC0vGC
|
||||
PB3T/iYyCGkernGPZ4QkmX1ofSD7gnyWPBUyaw2eFpYkhRnxXowZQyoTfpQbcUeZhhKDy8KlU6SSvTIZ
|
||||
42EZ6Gefp/7xW5bSI1xTZaKPZ3hWOBKfoUxFiTwJU9tM+FmbhSG+lxSqR8Oet4hqOkGxabjr7g4n0SOF
|
||||
G8g2KhHfRRjJEKmn8OgkzAhrHq5FJSCCZ1h2SptCtsKSnJ2xJS4Td1vbifLeJApme1kMdTSqS0uImjrn
|
||||
EJ+CmRAZvLkel4A72h1IM8SRD6vH9IkY1Ceg2dLEiE/Aaa7FGXCDZ2INZNIlYIp7QX7kudOEme5PiA4V
|
||||
E0VoUW1puodGhZr32Uk72v9AchKm9RE4YNRhNkWHc0Y9kVGPMJ5L1GMwKQ5VyTo07tRjiGs7mMczlmw8
|
||||
fterUfJqMn76tIfoQzZTzWbz3BJ0ClRXFRCd/Xhudt8uol2RKE7VISb9FXyQEYurZgNZ8VzadsyZtmOY
|
||||
1xlqWGdocdXEMjzLeoryMon4ySrZLF3IopMtJkmOmgYWrNpHlOALhZClbC0O5ERjMDeaWl+LRi/XzOFk
|
||||
lROF0ewYHLSEGEYvhB5h/bXsZClBy5xsMXuVOFmgZj90JDYLyUK+Gt/na/Alr3PZrV4YiR+Y9q3FFBTF
|
||||
YhPvzVWIG2S1FKoQVspue7GUDqrQVrwNn/G6VEHPFKtwuURNbzOti3nzNxKxx4b3iuWDURGKk+VKDPCa
|
||||
b3ZIgdsVCvx6RqJHuVamxFC5AnW8/tdUylHVEEZUFwi7YzI8URmEycMhKDwcjP3Mu1XD/sqOB5A9zxwL
|
||||
wlHR9mDUy9BSK8MvJ0IQ85EcHnUBuFEjwzvCllhdUSej63VyuNYHQ3uCZwPQJOy10eqH9tN++KbRFwU9
|
||||
Mlg3++LrJv+Fze7BtIoWX1xr9CGrU74oZD232/zQIuzV0e2B+l5XjHV4UNmIgh7r8sJEuzdKhb2EDm9U
|
||||
dHniJkm0rsOLys64YLx7K2qFfX/6XLC/1x/XOqbnlH2BeK7fDRO9Wxees+U464Hyc24Y/9yHnu2Z/E3F
|
||||
Zoz1OSNH2MvzhTN6Lvj9+e5g+2zigCsmzzsvvYzLcf5llA+44NZI82zSBR8cZ70rX9pBR/IcccToFVuM
|
||||
Dm9BnpBXzbAT3uC9lxxx+ZLTwpvnvlzfTE9eccAmsVwzX70Em8m/vVMf8h8iSX8BwCCUC3RVqvIAAAAA
|
||||
SUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
171
DarkControls/Controls/AppIcon.cs
Normal file
171
DarkControls/Controls/AppIcon.cs
Normal file
@ -0,0 +1,171 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class AppIcon : PictureBox
|
||||
{
|
||||
private float _Scale = 3.5f;
|
||||
|
||||
[
|
||||
Description("The value used to scale down the icon"),
|
||||
DefaultValue("3.5"),
|
||||
RefreshProperties(RefreshProperties.All)
|
||||
]
|
||||
public float Scale
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Scale;
|
||||
}
|
||||
set
|
||||
{
|
||||
_Scale = value;
|
||||
this.Size = Size.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
DefaultValue("50, 50"),
|
||||
RefreshProperties(RefreshProperties.All)
|
||||
]
|
||||
public new Size Size
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.Size;
|
||||
}
|
||||
set
|
||||
{
|
||||
SizeF sz = calcImgSize();
|
||||
this.Image = ResizeImage(appIconImg, (int)sz.Width, (int)sz.Height);
|
||||
base.Size = new Size((int)sz.Width, (int)sz.Height);
|
||||
}
|
||||
}
|
||||
private bool drag = false; // determine if we should be moving the form
|
||||
private Point startPoint = new Point(0, 0); // also for the moving
|
||||
public Form DragForm { get; set; } = null;
|
||||
|
||||
private Image appIconImg = Properties.Resources.icons8_crossed_axes_100;
|
||||
|
||||
[
|
||||
Description("The image that will be used for the icon"),
|
||||
RefreshProperties(RefreshProperties.All)
|
||||
]
|
||||
public Image AppIconImage
|
||||
{
|
||||
get
|
||||
{
|
||||
return appIconImg;
|
||||
}
|
||||
set
|
||||
{
|
||||
appIconImg = value;
|
||||
}
|
||||
}
|
||||
|
||||
public AppIcon()
|
||||
{
|
||||
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
||||
//BackColor = Color.Transparent;
|
||||
|
||||
this.MouseDown += AppLogo_MouseDown;
|
||||
this.MouseUp += AppLogo_MouseUp;
|
||||
this.MouseMove += AppLogo_MouseMove;
|
||||
SizeF sz = calcImgSize();
|
||||
this.Image = ResizeImage(appIconImg, (int)sz.Width, (int)sz.Height);
|
||||
this.Size = new Size((int)sz.Width, (int)sz.Height);
|
||||
|
||||
if (this.DesignMode == false)
|
||||
{
|
||||
if (DragForm != null) DragForm.Load += DragForm_Load;
|
||||
}
|
||||
}
|
||||
|
||||
private SizeF calcImgSize()
|
||||
{
|
||||
float scale = 3.5f;
|
||||
SizeF sz = new SizeF(appIconImg.Width, appIconImg.Height);
|
||||
float x = sz.Width / (float)scale;
|
||||
float y = sz.Height / (float)scale;
|
||||
return new SizeF(x, y);
|
||||
}
|
||||
|
||||
private void DragForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
SizeF sz = calcImgSize();
|
||||
this.Image = ResizeImage(appIconImg, (int)sz.Width, (int)sz.Height);
|
||||
this.Size = new Size((int)sz.Width, (int)sz.Height);
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
private void AppLogo_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (this.drag)
|
||||
{ // if we should be dragging it, we need to figure out some movement
|
||||
Point p1 = new Point(e.X, e.Y);
|
||||
Point p2 = DragForm.PointToScreen(p1);
|
||||
Point p3 = new Point(p2.X - this.startPoint.X,
|
||||
p2.Y - this.startPoint.Y);
|
||||
DragForm.Location = p3;
|
||||
}
|
||||
}
|
||||
|
||||
private void AppLogo_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
this.drag = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void AppLogo_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
this.startPoint = e.Location;
|
||||
this.drag = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resize the image to the specified width and height.
|
||||
/// </summary>
|
||||
/// <param name="image">The image to resize.</param>
|
||||
/// <param name="width">The width to resize to.</param>
|
||||
/// <param name="height">The height to resize to.</param>
|
||||
/// <returns>The resized image.</returns>
|
||||
public static Bitmap ResizeImage(Image image, int width, int height)
|
||||
{
|
||||
var destRect = new Rectangle(0, 0, width, height);
|
||||
var destImage = new Bitmap(width, height);
|
||||
|
||||
destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
|
||||
|
||||
using (var graphics = Graphics.FromImage(destImage))
|
||||
{
|
||||
graphics.CompositingMode = CompositingMode.SourceCopy;
|
||||
graphics.CompositingQuality = CompositingQuality.HighQuality;
|
||||
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
graphics.SmoothingMode = SmoothingMode.HighQuality;
|
||||
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
|
||||
using (var wrapMode = new ImageAttributes())
|
||||
{
|
||||
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
|
||||
graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
|
||||
}
|
||||
}
|
||||
|
||||
return destImage;
|
||||
}
|
||||
}
|
||||
}
|
24
DarkControls/Controls/CloseButton.cs
Normal file
24
DarkControls/Controls/CloseButton.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class CloseButton : WindowsDefaultTitleBarButton
|
||||
{
|
||||
public CloseButton()
|
||||
{
|
||||
this.ButtonType = DarkControls.Controls.WindowsDefaultTitleBarButton.Type.Close;
|
||||
this.ClickColor = System.Drawing.Color.Red;
|
||||
this.ClickIconColor = System.Drawing.Color.Black;
|
||||
this.HoverColor = System.Drawing.Color.OrangeRed;
|
||||
this.HoverIconColor = System.Drawing.Color.Black;
|
||||
this.IconColor = System.Drawing.Color.Black;
|
||||
this.IconLineThickness = 2;
|
||||
this.Size = new System.Drawing.Size(40, 40);
|
||||
this.UseVisualStyleBackColor = true;
|
||||
}
|
||||
}
|
||||
}
|
101
DarkControls/Controls/CustomCheckedListBox.cs
Normal file
101
DarkControls/Controls/CustomCheckedListBox.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class CustomCheckedListBox : CheckedListBox
|
||||
{
|
||||
public CustomCheckedListBox()
|
||||
{
|
||||
//this.SetStyle(
|
||||
// ControlStyles.OptimizedDoubleBuffer |
|
||||
// ControlStyles.ResizeRedraw,
|
||||
// //ControlStyles.UserPaint,
|
||||
// true);
|
||||
//this.DrawMode = DrawMode.OwnerDrawFixed;
|
||||
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
|
||||
this.ForeColor = Color.Silver;
|
||||
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.CheckedItemColor = System.Drawing.Color.Silver;
|
||||
this.CheckOnClick = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
Region iRegion = new Region(e.ClipRectangle);
|
||||
e.Graphics.FillRegion(new SolidBrush(this.BackColor), iRegion);
|
||||
if (this.Items.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < this.Items.Count; ++i)
|
||||
{
|
||||
System.Drawing.Rectangle irect = this.GetItemRectangle(i);
|
||||
if (e.ClipRectangle.IntersectsWith(irect))
|
||||
{
|
||||
if ((this.SelectionMode == SelectionMode.One && this.SelectedIndex == i)
|
||||
|| (this.SelectionMode == SelectionMode.MultiSimple && this.SelectedIndices.Contains(i))
|
||||
|| (this.SelectionMode == SelectionMode.MultiExtended && this.SelectedIndices.Contains(i)))
|
||||
{
|
||||
OnDrawItem(new DrawItemEventArgs(e.Graphics, this.Font,
|
||||
irect, i,
|
||||
DrawItemState.Selected, this.ForeColor,
|
||||
this.BackColor));
|
||||
}
|
||||
else
|
||||
{
|
||||
OnDrawItem(new DrawItemEventArgs(e.Graphics, this.Font,
|
||||
irect, i,
|
||||
DrawItemState.Default, this.ForeColor,
|
||||
this.BackColor));
|
||||
}
|
||||
iRegion.Complement(irect);
|
||||
}
|
||||
}
|
||||
}
|
||||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
protected override void OnDrawItem(DrawItemEventArgs e)
|
||||
{
|
||||
Size checkSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal);
|
||||
int dx = (e.Bounds.Height - checkSize.Width) / 2;
|
||||
e.DrawBackground();
|
||||
//e.DrawFocusRectangle();
|
||||
if (this.Items.Count > 0)
|
||||
{
|
||||
//var isChecked = GetItemChecked(e.Index) ? CheckState.Checked : CheckState.Unchecked;
|
||||
bool isChecked = GetItemChecked(e.Index);//For some reason e.State doesn't work so we have to do this instead.
|
||||
//CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(dx, e.Bounds.Top + dx), isChecked ? System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal : System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);
|
||||
DarkCheckBox.DrawCheckBox(e.Graphics, new Point(dx, e.Bounds.Top + dx), this.GetItemCheckState(e.Index));
|
||||
using (StringFormat sf = new StringFormat { LineAlignment = StringAlignment.Center })
|
||||
{
|
||||
using (Brush brush = new SolidBrush(isChecked ? CheckedItemColor : ForeColor))
|
||||
{
|
||||
e.Graphics.DrawString(Items[e.Index].ToString(), Font, brush, new Rectangle(e.Bounds.Height, e.Bounds.Top, e.Bounds.Width - e.Bounds.Height, e.Bounds.Height), sf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//base.OnDrawItem(e);
|
||||
}
|
||||
Color checkedItemColor = Color.Green;
|
||||
public Color CheckedItemColor
|
||||
{
|
||||
get { return checkedItemColor; }
|
||||
set
|
||||
{
|
||||
checkedItemColor = value;
|
||||
//Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
342
DarkControls/Controls/CustomScrollBar.cs
Normal file
342
DarkControls/Controls/CustomScrollBar.cs
Normal file
@ -0,0 +1,342 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms.VisualStyles;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class CustomScrollBar : Control
|
||||
{
|
||||
private Rectangle clickedBarRectangle;
|
||||
private Rectangle thumbRectangle;
|
||||
private Rectangle leftArrowRectangle;
|
||||
private Rectangle rightArrowRectangle;
|
||||
private bool leftArrowClicked = false;
|
||||
private bool rightArrowClicked = false;
|
||||
private bool leftBarClicked = false;
|
||||
private bool rightBarClicked = false;
|
||||
private bool thumbClicked = false;
|
||||
private ScrollBarState thumbState = ScrollBarState.Normal;
|
||||
private ScrollBarArrowButtonState leftButtonState =
|
||||
ScrollBarArrowButtonState.LeftNormal;
|
||||
private ScrollBarArrowButtonState rightButtonState =
|
||||
ScrollBarArrowButtonState.RightNormal;
|
||||
|
||||
// This control does not allow these widths to be altered.
|
||||
private int thumbWidth = 15;
|
||||
private int arrowWidth = 17;
|
||||
|
||||
// Set the right limit of the thumb's right border.
|
||||
private int thumbRightLimitRight = 0;
|
||||
|
||||
// Set the right limit of the thumb's left border.
|
||||
private int thumbRightLimitLeft = 0;
|
||||
|
||||
// Set the left limit of thumb's left border.
|
||||
private int thumbLeftLimit = 0;
|
||||
|
||||
// Set the distance from the left edge of the thumb to the
|
||||
// cursor tip.
|
||||
private int thumbPosition = 0;
|
||||
|
||||
// Set the distance from the left edge of the scroll bar track
|
||||
// to the cursor tip.
|
||||
private int trackPosition = 0;
|
||||
|
||||
// This timer draws the moving thumb while the scroll arrows or
|
||||
// track are pressed.
|
||||
private Timer progressTimer = new Timer();
|
||||
|
||||
public CustomScrollBar()
|
||||
: base()
|
||||
{
|
||||
this.Location = new Point(10, 10);
|
||||
this.Width = 200;
|
||||
this.Height = 20;
|
||||
this.DoubleBuffered = true;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
|
||||
|
||||
SetUpScrollBar();
|
||||
progressTimer.Interval = 20;
|
||||
progressTimer.Tick += new EventHandler(progressTimer_Tick);
|
||||
}
|
||||
|
||||
// Calculate the sizes of the scroll bar elements.
|
||||
private void SetUpScrollBar()
|
||||
{
|
||||
clickedBarRectangle = ClientRectangle;
|
||||
thumbRectangle = new Rectangle(
|
||||
ClientRectangle.X + ClientRectangle.Width / 2,
|
||||
ClientRectangle.Y, thumbWidth,
|
||||
ClientRectangle.Height);
|
||||
leftArrowRectangle = new Rectangle(
|
||||
ClientRectangle.X, ClientRectangle.Y,
|
||||
arrowWidth, ClientRectangle.Height);
|
||||
rightArrowRectangle = new Rectangle(
|
||||
ClientRectangle.Right - arrowWidth,
|
||||
ClientRectangle.Y, arrowWidth,
|
||||
ClientRectangle.Height);
|
||||
|
||||
// Set the default starting thumb position.
|
||||
thumbPosition = thumbWidth / 2;
|
||||
|
||||
// Set the right limit of the thumb's right border.
|
||||
thumbRightLimitRight = ClientRectangle.Right - arrowWidth;
|
||||
|
||||
// Set the right limit of the thumb's left border.
|
||||
thumbRightLimitLeft = thumbRightLimitRight - thumbWidth;
|
||||
|
||||
// Set the left limit of the thumb's left border.
|
||||
thumbLeftLimit = ClientRectangle.X + arrowWidth;
|
||||
}
|
||||
|
||||
// Draw the scroll bar in its normal state.
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.Clear(BackColor);
|
||||
base.OnPaint(e);
|
||||
|
||||
// Visual styles are not enabled.
|
||||
if (!ScrollBarRenderer.IsSupported)
|
||||
{
|
||||
this.Parent.Text = "CustomScrollBar Disabled";
|
||||
return;
|
||||
}
|
||||
|
||||
this.Parent.Text = "CustomScrollBar Enabled";
|
||||
|
||||
// Draw the scroll bar track.
|
||||
ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics,
|
||||
ClientRectangle, ScrollBarState.Normal);
|
||||
|
||||
// Draw the thumb and thumb grip in the current state.
|
||||
ScrollBarRenderer.DrawHorizontalThumb(e.Graphics,
|
||||
thumbRectangle, thumbState);
|
||||
ScrollBarRenderer.DrawHorizontalThumbGrip(e.Graphics,
|
||||
thumbRectangle, thumbState);
|
||||
|
||||
// Draw the scroll arrows in the current state.
|
||||
ScrollBarRenderer.DrawArrowButton(e.Graphics,
|
||||
leftArrowRectangle, leftButtonState);
|
||||
ScrollBarRenderer.DrawArrowButton(e.Graphics,
|
||||
rightArrowRectangle, rightButtonState);
|
||||
|
||||
// Draw a highlighted rectangle in the left side of the scroll
|
||||
// bar track if the user has clicked between the left arrow
|
||||
// and thumb.
|
||||
if (leftBarClicked)
|
||||
{
|
||||
clickedBarRectangle.X = thumbLeftLimit;
|
||||
clickedBarRectangle.Width = thumbRectangle.X - thumbLeftLimit;
|
||||
ScrollBarRenderer.DrawLowerVerticalTrack(e.Graphics,
|
||||
clickedBarRectangle, ScrollBarState.Pressed);
|
||||
}
|
||||
|
||||
// Draw a highlighted rectangle in the right side of the scroll
|
||||
// bar track if the user has clicked between the right arrow
|
||||
// and thumb.
|
||||
else if (rightBarClicked)
|
||||
{
|
||||
clickedBarRectangle.X =
|
||||
thumbRectangle.X + thumbRectangle.Width;
|
||||
clickedBarRectangle.Width =
|
||||
thumbRightLimitRight - clickedBarRectangle.X;
|
||||
ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics,
|
||||
clickedBarRectangle, ScrollBarState.Pressed);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle a mouse click in the scroll bar.
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
|
||||
if (!ScrollBarRenderer.IsSupported)
|
||||
return;
|
||||
|
||||
// When the thumb is clicked, update the distance from the left
|
||||
// edge of the thumb to the cursor tip.
|
||||
if (thumbRectangle.Contains(e.Location))
|
||||
{
|
||||
thumbClicked = true;
|
||||
thumbPosition = e.Location.X - thumbRectangle.X;
|
||||
thumbState = ScrollBarState.Pressed;
|
||||
}
|
||||
|
||||
// When the left arrow is clicked, start the timer to scroll
|
||||
// while the arrow is held down.
|
||||
else if (leftArrowRectangle.Contains(e.Location))
|
||||
{
|
||||
leftArrowClicked = true;
|
||||
leftButtonState = ScrollBarArrowButtonState.LeftPressed;
|
||||
progressTimer.Start();
|
||||
}
|
||||
|
||||
// When the right arrow is clicked, start the timer to scroll
|
||||
// while the arrow is held down.
|
||||
else if (rightArrowRectangle.Contains(e.Location))
|
||||
{
|
||||
rightArrowClicked = true;
|
||||
rightButtonState = ScrollBarArrowButtonState.RightPressed;
|
||||
progressTimer.Start();
|
||||
}
|
||||
|
||||
// When the scroll bar is clicked, start the timer to move the
|
||||
// thumb while the mouse is held down.
|
||||
else
|
||||
{
|
||||
trackPosition = e.Location.X;
|
||||
|
||||
if (e.Location.X < this.thumbRectangle.X)
|
||||
{
|
||||
leftBarClicked = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
rightBarClicked = true;
|
||||
}
|
||||
progressTimer.Start();
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
// Draw the track.
|
||||
protected override void OnMouseUp(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
|
||||
if (!ScrollBarRenderer.IsSupported)
|
||||
return;
|
||||
|
||||
// Update the thumb position, if the new location is within
|
||||
// the bounds.
|
||||
if (thumbClicked)
|
||||
{
|
||||
thumbClicked = false;
|
||||
thumbState = ScrollBarState.Normal;
|
||||
|
||||
if (e.Location.X > (thumbLeftLimit + thumbPosition) &&
|
||||
e.Location.X < (thumbRightLimitLeft + thumbPosition))
|
||||
{
|
||||
thumbRectangle.X = e.Location.X - thumbPosition;
|
||||
thumbClicked = false;
|
||||
}
|
||||
}
|
||||
|
||||
// If one of the four thumb movement areas was clicked,
|
||||
// stop the timer.
|
||||
else if (leftArrowClicked)
|
||||
{
|
||||
leftArrowClicked = false;
|
||||
leftButtonState = ScrollBarArrowButtonState.LeftNormal;
|
||||
progressTimer.Stop();
|
||||
}
|
||||
|
||||
else if (rightArrowClicked)
|
||||
{
|
||||
rightArrowClicked = false;
|
||||
rightButtonState = ScrollBarArrowButtonState.RightNormal;
|
||||
progressTimer.Stop();
|
||||
}
|
||||
|
||||
else if (leftBarClicked)
|
||||
{
|
||||
leftBarClicked = false;
|
||||
progressTimer.Stop();
|
||||
}
|
||||
|
||||
else if (rightBarClicked)
|
||||
{
|
||||
rightBarClicked = false;
|
||||
progressTimer.Stop();
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
// Track mouse movements if the user clicks on the scroll bar thumb.
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
|
||||
if (!ScrollBarRenderer.IsSupported)
|
||||
return;
|
||||
|
||||
// Update the thumb position, if the new location is
|
||||
// within the bounds.
|
||||
if (thumbClicked)
|
||||
{
|
||||
// The thumb is all the way to the left.
|
||||
if (e.Location.X <= (thumbLeftLimit + thumbPosition))
|
||||
{
|
||||
thumbRectangle.X = thumbLeftLimit;
|
||||
}
|
||||
|
||||
// The thumb is all the way to the right.
|
||||
else if (e.Location.X >= (thumbRightLimitLeft + thumbPosition))
|
||||
{
|
||||
thumbRectangle.X = thumbRightLimitLeft;
|
||||
}
|
||||
|
||||
// The thumb is between the ends of the track.
|
||||
else
|
||||
{
|
||||
thumbRectangle.X = e.Location.X - thumbPosition;
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
// Recalculate the sizes of the scroll bar elements.
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
base.OnSizeChanged(e);
|
||||
SetUpScrollBar();
|
||||
}
|
||||
|
||||
// Handle the timer tick by updating the thumb position.
|
||||
private void progressTimer_Tick(object sender, EventArgs myEventArgs)
|
||||
{
|
||||
if (!ScrollBarRenderer.IsSupported)
|
||||
return;
|
||||
|
||||
// If an arrow is clicked, move the thumb in small increments.
|
||||
if (rightArrowClicked && thumbRectangle.X < thumbRightLimitLeft)
|
||||
{
|
||||
thumbRectangle.X++;
|
||||
}
|
||||
else if (leftArrowClicked && thumbRectangle.X > thumbLeftLimit)
|
||||
{
|
||||
thumbRectangle.X--;
|
||||
}
|
||||
|
||||
// If the track bar to right of the thumb is clicked, move the
|
||||
// thumb to the right in larger increments until the right edge
|
||||
// of the thumb hits the cursor.
|
||||
else if (rightBarClicked &&
|
||||
thumbRectangle.X < thumbRightLimitLeft &&
|
||||
thumbRectangle.X + thumbRectangle.Width < trackPosition)
|
||||
{
|
||||
thumbRectangle.X += 3;
|
||||
}
|
||||
|
||||
// If the track bar to left of the thumb is clicked, move the
|
||||
// thumb to the left in larger increments until the left edge
|
||||
// of the thumb hits the cursor.
|
||||
else if (leftBarClicked &&
|
||||
thumbRectangle.X > thumbLeftLimit &&
|
||||
thumbRectangle.X > trackPosition)
|
||||
{
|
||||
thumbRectangle.X -= 3;
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
52
DarkControls/Controls/CustomStatusStrip.cs
Normal file
52
DarkControls/Controls/CustomStatusStrip.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class CustomStatusStrip : StatusStrip
|
||||
{
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
// Set the background color to RGB value 33, 33, 33
|
||||
this.BackColor = Color.FromArgb(33, 33, 33);
|
||||
|
||||
// Set the foreground color to Silver
|
||||
this.ForeColor = Color.Silver;
|
||||
|
||||
e.Graphics.Clear(this.BackColor);
|
||||
|
||||
// Call the base OnPaint method to handle the actual rendering
|
||||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
//protected override void OnRender (ToolStripRenderEventArgs e)
|
||||
//{
|
||||
// // Set the background color to RGB value 33, 33, 33
|
||||
// e.Graphics.Clear(Color.FromArgb(33, 33, 33));
|
||||
// base.OnRenderToolStripBackground(e);
|
||||
//}
|
||||
|
||||
//protected override void OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs e)
|
||||
//{
|
||||
// e.Graphics.Clear(Color.FromArgb(33, 33, 33));
|
||||
// base.OnRenderToolStripContentPanelBackground(e);
|
||||
//}
|
||||
|
||||
//protected override void OnRenderItem(ToolStripItemRenderEventArgs e)
|
||||
//{
|
||||
// // Set the background color to RGB value 33, 33, 33
|
||||
// e.Item.BackColor = Color.FromArgb(33, 33, 33);
|
||||
|
||||
// // Set the foreground color to Silver
|
||||
// e.Item.ForeColor = Color.Silver;
|
||||
|
||||
// // Call the base OnRenderItem method to handle the actual rendering
|
||||
// base.OnRenderItem(e);
|
||||
//}
|
||||
}
|
||||
}
|
23
DarkControls/Controls/DarkButton.cs
Normal file
23
DarkControls/Controls/DarkButton.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class DarkButton : Button
|
||||
{
|
||||
public DarkButton()
|
||||
{
|
||||
this.BackColor = Color.FromArgb(33, 33, 33);
|
||||
this.ForeColor = Color.Silver;
|
||||
|
||||
this.Size = new Size(75, 23);
|
||||
this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.UseVisualStyleBackColor = true;
|
||||
}
|
||||
}
|
||||
}
|
274
DarkControls/Controls/DarkCheckBox.cs
Normal file
274
DarkControls/Controls/DarkCheckBox.cs
Normal file
@ -0,0 +1,274 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Runtime.InteropServices;
|
||||
using SystemMath = System.Math;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class DarkCheckBox : CheckBox
|
||||
{
|
||||
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
|
||||
private static extern IntPtr CreateRoundRectRgn
|
||||
(
|
||||
int nLeftRect, // x-coordinate of upper-left corner
|
||||
int nTopRect, // y-coordinate of upper-left corner
|
||||
int nRightRect, // x-coordinate of lower-right corner
|
||||
int nBottomRect, // y-coordinate of lower-right corner
|
||||
int nWidthEllipse, // width of ellipse
|
||||
int nHeightEllipse // height of ellipse
|
||||
);
|
||||
|
||||
public Color CheckColor { get; set; } = Color.CornflowerBlue;
|
||||
public Color BoxFillColor { get; set; } = Color.FromArgb(33, 33, 33);
|
||||
public Color BoxBorderColor { get; set; } = Color.DarkSlateBlue;
|
||||
public DarkCheckBox()
|
||||
{
|
||||
Appearance = System.Windows.Forms.Appearance.Button;
|
||||
FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
TextAlign = ContentAlignment.MiddleRight;
|
||||
FlatAppearance.BorderSize = 0;
|
||||
AutoSize = false;
|
||||
Height = 16;
|
||||
}
|
||||
|
||||
public static GraphicsPath RoundedRect(Rectangle bounds, int radius)
|
||||
{
|
||||
int diameter = radius * 2;
|
||||
Size size = new Size(diameter, diameter);
|
||||
Rectangle arc = new Rectangle(bounds.Location, size);
|
||||
GraphicsPath path = new GraphicsPath();
|
||||
|
||||
if (radius == 0)
|
||||
{
|
||||
path.AddRectangle(bounds);
|
||||
return path;
|
||||
}
|
||||
|
||||
// top left arc
|
||||
path.AddArc(arc, 180, 90);
|
||||
|
||||
// top right arc
|
||||
arc.X = bounds.Right - diameter;
|
||||
path.AddArc(arc, 270, 90);
|
||||
|
||||
// bottom right arc
|
||||
arc.Y = bounds.Bottom - diameter;
|
||||
path.AddArc(arc, 0, 90);
|
||||
|
||||
// bottom left arc
|
||||
arc.X = bounds.Left;
|
||||
path.AddArc(arc, 90, 90);
|
||||
|
||||
path.CloseFigure();
|
||||
return path;
|
||||
}
|
||||
|
||||
bool mouseEntered = false;
|
||||
bool mouseDown = false;
|
||||
|
||||
protected override void OnMouseEnter(EventArgs eventargs)
|
||||
{
|
||||
mouseEntered = true;
|
||||
base.OnMouseEnter(eventargs);
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs eventargs)
|
||||
{
|
||||
mouseEntered = false;
|
||||
base.OnMouseLeave(eventargs);
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs mevent)
|
||||
{
|
||||
if (mevent.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseDown = true;
|
||||
this.Invalidate();
|
||||
}
|
||||
base.OnMouseDown(mevent);
|
||||
}
|
||||
|
||||
//protected override void OnMouseMove(MouseEventArgs mevent)
|
||||
//{
|
||||
// if (mevent.Button == MouseButtons.Left)
|
||||
// {
|
||||
// mouseDown = true;
|
||||
// this.Invalidate();
|
||||
// }
|
||||
// base.OnMouseMove(mevent);
|
||||
//}
|
||||
|
||||
protected override void OnMouseUp(MouseEventArgs mevent)
|
||||
{
|
||||
if (mevent.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseDown = false;
|
||||
this.Invalidate();
|
||||
}
|
||||
base.OnMouseUp(mevent);
|
||||
}
|
||||
|
||||
public static void DrawCheckBox(Graphics g, Point p, CheckState Checked)
|
||||
{
|
||||
Color BoxFillColor = Color.FromArgb(33, 33, 33);
|
||||
//using (SolidBrush brush = new SolidBrush(BoxFillColor))
|
||||
// g.DrawString(Text, Font, brush, 26, 6);
|
||||
|
||||
Point pt = new Point(4, 4);
|
||||
Rectangle rect = new Rectangle(p, new Size(12, 12));
|
||||
|
||||
//if (mouseEntered)
|
||||
//{
|
||||
// if (mouseDown)
|
||||
// {
|
||||
// Color col = Color.FromArgb(BoxFillColor.R - 4, BoxFillColor.G - 4, BoxFillColor.B - 4);
|
||||
// using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
// {
|
||||
// g.FillPath(new SolidBrush(col), path);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Color col = Color.FromArgb(BoxFillColor.R + 22, BoxFillColor.G + 22, BoxFillColor.B + 22);
|
||||
// using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
// {
|
||||
// g.FillPath(new SolidBrush(col), path);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
{
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
g.FillPath(new SolidBrush(BoxFillColor), path);
|
||||
}
|
||||
}
|
||||
|
||||
if (Checked == CheckState.Checked)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(Color.CornflowerBlue))
|
||||
using (Font wing = new Font("Wingdings", 12f))
|
||||
g.DrawString("ü", wing, brush, p.X - 2f, p.Y - 2f);
|
||||
}
|
||||
else if (Checked == CheckState.Indeterminate)
|
||||
{
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
g.FillPath(new SolidBrush(Color.CornflowerBlue), path);
|
||||
}
|
||||
}
|
||||
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
g.DrawPath(new Pen(Color.Silver), path);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pevent)
|
||||
{
|
||||
//base.OnPaint(pevent);
|
||||
|
||||
pevent.Graphics.Clear(BackColor);
|
||||
|
||||
if (this.Enabled)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(ForeColor))
|
||||
pevent.Graphics.DrawString(Text, Font, brush, 26, 6);
|
||||
|
||||
Point pt = new Point(4, 4);
|
||||
Rectangle rect = new Rectangle(pt, new Size(16, 16));
|
||||
|
||||
if (mouseEntered)
|
||||
{
|
||||
if (mouseDown)
|
||||
{
|
||||
Color col = Color.FromArgb(BoxFillColor.R - 4, BoxFillColor.G - 4, BoxFillColor.B - 4);
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
pevent.Graphics.FillPath(new SolidBrush(col), path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Color col = Color.FromArgb(BoxFillColor.R + 22, BoxFillColor.G + 22, BoxFillColor.B + 22);
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
pevent.Graphics.FillPath(new SolidBrush(col), path);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
pevent.Graphics.FillPath(new SolidBrush(BoxFillColor), path);
|
||||
}
|
||||
}
|
||||
|
||||
if (Checked)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(CheckColor))
|
||||
using (Font wing = new Font("Wingdings", 12f))
|
||||
pevent.Graphics.DrawString("ü", wing, brush, 3, 5);
|
||||
}
|
||||
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
pevent.Graphics.DrawPath(new Pen(BoxBorderColor), path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
double brightnessDim = 0.4;
|
||||
double[] hsbForeColor = SimpleColorTransforms.RgBtoHsb(ForeColor);
|
||||
double[] hsBoxFillColor = SimpleColorTransforms.RgBtoHsb(BoxFillColor);
|
||||
double[] hsBoxBorderColor = SimpleColorTransforms.RgBtoHsb(BoxBorderColor);
|
||||
double[] hsCheckColor = SimpleColorTransforms.RgBtoHsb(CheckColor);
|
||||
|
||||
hsbForeColor[1] = 0.0;
|
||||
hsbForeColor[2] -= brightnessDim;
|
||||
|
||||
hsBoxFillColor[1] = 0.0;
|
||||
//hsBoxFillColor[2] -= brightnessDim;
|
||||
|
||||
hsBoxBorderColor[1] = 0.0;
|
||||
hsBoxBorderColor[2] -= brightnessDim;
|
||||
|
||||
hsCheckColor[1] = 0.0;
|
||||
hsCheckColor[2] -= brightnessDim;
|
||||
|
||||
Color foreColor = SimpleColorTransforms.HsBtoRgb(hsbForeColor[0], hsbForeColor[1], hsbForeColor[2]);
|
||||
Color boxFillColor = SimpleColorTransforms.HsBtoRgb(hsBoxFillColor[0], hsBoxFillColor[1], hsBoxFillColor[2]);
|
||||
Color boxBorderColor = SimpleColorTransforms.HsBtoRgb(hsBoxBorderColor[0], hsBoxBorderColor[1], hsBoxBorderColor[2]);
|
||||
Color checkColor = SimpleColorTransforms.HsBtoRgb(hsCheckColor[0], hsCheckColor[1], hsCheckColor[2]);
|
||||
|
||||
|
||||
using (SolidBrush brush = new SolidBrush(foreColor))
|
||||
pevent.Graphics.DrawString(Text, Font, brush, 26, 6);
|
||||
|
||||
Point pt = new Point(4, 4);
|
||||
Rectangle rect = new Rectangle(pt, new Size(16, 16));
|
||||
|
||||
pevent.Graphics.FillRectangle(new SolidBrush(boxFillColor), rect);
|
||||
|
||||
if (Checked)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(checkColor))
|
||||
using (Font wing = new Font("Wingdings", 12f))
|
||||
pevent.Graphics.DrawString("ü", wing, brush, 3, 5);
|
||||
}
|
||||
|
||||
using (GraphicsPath path = RoundedRect(rect, 4))
|
||||
{
|
||||
pevent.Graphics.DrawPath(new Pen(boxBorderColor), path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
26
DarkControls/Controls/DarkSelectFileButton.cs
Normal file
26
DarkControls/Controls/DarkSelectFileButton.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class DarkSelectFileButton : Button
|
||||
{
|
||||
public DarkSelectFileButton()
|
||||
{
|
||||
this.BackColor = Color.FromArgb(33, 33, 33);
|
||||
this.ForeColor = Color.Silver;
|
||||
this.FlatAppearance.BorderColor = System.Drawing.Color.Silver;
|
||||
this.FlatAppearance.BorderSize = 0;
|
||||
this.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Silver;
|
||||
this.Image = Properties.Resources.selectFileBtn_Image;
|
||||
this.Size = new Size(75, 23);
|
||||
this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.UseVisualStyleBackColor = true;
|
||||
}
|
||||
}
|
||||
}
|
50
DarkControls/Controls/DarkTextBox.cs
Normal file
50
DarkControls/Controls/DarkTextBox.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms.VisualStyles;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class DarkTextBox : System.Windows.Forms.TextBox
|
||||
{
|
||||
public DarkTextBox()
|
||||
{
|
||||
// Initialize the renderer
|
||||
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
|
||||
this.ForeColor = Color.Silver;
|
||||
|
||||
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
//Debugger.Break();
|
||||
if (ScrollBarRenderer.IsSupported)
|
||||
{
|
||||
Debugger.Break();
|
||||
// Draw the custom scrollbar
|
||||
ScrollBarRenderer.DrawUpperVerticalTrack(e.Graphics, new Rectangle(this.Right - 18, this.Top, 18, this.Height), ScrollBarState.Normal);
|
||||
ScrollBarRenderer.DrawLowerVerticalTrack(e.Graphics, new Rectangle(this.Right - 18, this.Top, 18, this.Height), ScrollBarState.Normal);
|
||||
ScrollBarRenderer.DrawVerticalThumb(e.Graphics, new Rectangle(this.Right - 18, this.Top, 18, this.Height), ScrollBarState.Normal);
|
||||
ScrollBarRenderer.DrawVerticalThumbGrip(e.Graphics, new Rectangle(this.Right - 18, this.Top, 18, this.Height), ScrollBarState.Normal);
|
||||
}
|
||||
|
||||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
//protected override void WndProc(ref Message m)
|
||||
//{
|
||||
// base.WndProc(ref m);
|
||||
// if (m.Msg == 0x00F7)
|
||||
// {
|
||||
// m.Result = (IntPtr)1;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
12
DarkControls/Controls/FlatScrollBar.cs
Normal file
12
DarkControls/Controls/FlatScrollBar.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
internal class FlatScrollBar
|
||||
{
|
||||
}
|
||||
}
|
1384
DarkControls/Controls/FlatScrollBar1.cs
Normal file
1384
DarkControls/Controls/FlatScrollBar1.cs
Normal file
File diff suppressed because it is too large
Load Diff
24
DarkControls/Controls/MaximizeButton.cs
Normal file
24
DarkControls/Controls/MaximizeButton.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class MaximizeButton : WindowsDefaultTitleBarButton
|
||||
{
|
||||
public MaximizeButton()
|
||||
{
|
||||
this.ButtonType = DarkControls.Controls.WindowsDefaultTitleBarButton.Type.Maximize;
|
||||
this.ClickColor = System.Drawing.Color.Red;
|
||||
this.ClickIconColor = System.Drawing.Color.Black;
|
||||
this.HoverColor = System.Drawing.Color.OrangeRed;
|
||||
this.HoverIconColor = System.Drawing.Color.Black;
|
||||
this.IconColor = System.Drawing.Color.Black;
|
||||
this.IconLineThickness = 2;
|
||||
this.Size = new System.Drawing.Size(40, 40);
|
||||
this.UseVisualStyleBackColor = true;
|
||||
}
|
||||
}
|
||||
}
|
24
DarkControls/Controls/MinimizeButton.cs
Normal file
24
DarkControls/Controls/MinimizeButton.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class MinimizeButton : WindowsDefaultTitleBarButton
|
||||
{
|
||||
public MinimizeButton()
|
||||
{
|
||||
this.ButtonType = DarkControls.Controls.WindowsDefaultTitleBarButton.Type.Minimize;
|
||||
this.ClickColor = System.Drawing.Color.Red;
|
||||
this.ClickIconColor = System.Drawing.Color.Black;
|
||||
this.HoverColor = System.Drawing.Color.OrangeRed;
|
||||
this.HoverIconColor = System.Drawing.Color.Black;
|
||||
this.IconColor = System.Drawing.Color.Black;
|
||||
this.IconLineThickness = 2;
|
||||
this.Size = new System.Drawing.Size(40, 40);
|
||||
this.UseVisualStyleBackColor = true;
|
||||
}
|
||||
}
|
||||
}
|
24
DarkControls/Controls/NoFocusCueBotton.cs
Normal file
24
DarkControls/Controls/NoFocusCueBotton.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Modified button which has no focus rectangles when the form which contains this button loses fucus while the button was focused.
|
||||
/// </summary>
|
||||
[ToolboxItem(typeof(NoFocusCueBotton))]
|
||||
public class NoFocusCueBotton : Button
|
||||
{
|
||||
protected override bool ShowFocusCues => false;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of a <see cref="NoFocusCueBotton"/>
|
||||
/// </summary>
|
||||
public NoFocusCueBotton() { }
|
||||
|
||||
public override void NotifyDefault(bool value)
|
||||
{
|
||||
base.NotifyDefault(false);
|
||||
}
|
||||
}
|
||||
}
|
49
DarkControls/Controls/ProgressBarEx.cs
Normal file
49
DarkControls/Controls/ProgressBarEx.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class ProgressBarEx : ProgressBar
|
||||
{
|
||||
public ProgressBarEx()
|
||||
{
|
||||
this.SetStyle(ControlStyles.UserPaint, true);
|
||||
}
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs pevent)
|
||||
{
|
||||
// None... Helps control the flicker.
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
const int inset = 2; // A single inset value to control teh sizing of the inner rect.
|
||||
|
||||
using (Image offscreenImage = new Bitmap(this.Width, this.Height))
|
||||
{
|
||||
using (Graphics offscreen = Graphics.FromImage(offscreenImage))
|
||||
{
|
||||
offscreen.Clear(this.BackColor);
|
||||
Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
|
||||
offscreen.DrawRectangle(new Pen(Color.Silver, 2), rect);
|
||||
|
||||
//if (ProgressBarRenderer.IsSupported)
|
||||
// ProgressBarRenderer.DrawHorizontalBar(offscreen, rect);
|
||||
|
||||
rect.Inflate(new Size(-inset, -inset)); // Deflate inner rect.
|
||||
rect.Width = (int)(rect.Width * ((double)this.Value / this.Maximum));
|
||||
if (rect.Width == 0) rect.Width = 1; // Can't draw rec with width of 0.
|
||||
|
||||
//LinearGradientBrush brush = new LinearGradientBrush(rect, this.BackColor, this.ForeColor, LinearGradientMode.Horizontal);
|
||||
SolidBrush brush = new SolidBrush(this.ForeColor);
|
||||
|
||||
offscreen.FillRectangle(brush, inset, inset, rect.Width, rect.Height);
|
||||
|
||||
e.Graphics.DrawImage(offscreenImage, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
403
DarkControls/Controls/SimpleColorTransforms.cs
Normal file
403
DarkControls/Controls/SimpleColorTransforms.cs
Normal file
@ -0,0 +1,403 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Runtime.InteropServices;
|
||||
using SystemMath = System.Math;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Static methods for transforming argb spaces and argb values.
|
||||
/// </summary>
|
||||
public static class SimpleColorTransforms
|
||||
{
|
||||
private static double tolerance
|
||||
=> 0.000000000000001;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Defines brightness levels.
|
||||
/// </summary>
|
||||
public enum Brightness
|
||||
: byte
|
||||
{
|
||||
Bright = 255,
|
||||
MediumBright = 210,
|
||||
Medium = 142,
|
||||
Dim = 98,
|
||||
XDim = 50
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Defines alpha levels.
|
||||
/// </summary>
|
||||
public enum Alpha
|
||||
: byte
|
||||
{
|
||||
Opaque = 255,
|
||||
MediumHigh = 230,
|
||||
Medium = 175,
|
||||
MediumLow = 142,
|
||||
Low = 109,
|
||||
XLow = 45
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Defines hint alpha levels.
|
||||
/// </summary>
|
||||
public enum HintAlpha
|
||||
: byte
|
||||
{
|
||||
Low = 64,
|
||||
XLow = 48,
|
||||
XxLow = 32,
|
||||
XxxLow = 16
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Specifies a mode for argb transformations.
|
||||
/// </summary>
|
||||
public enum ColorTransformMode
|
||||
: byte
|
||||
{
|
||||
Hsl,
|
||||
Hsb
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Converts RGB to HSL. Alpha is ignored.
|
||||
/// Output is: { H: [0, 360], S: [0, 1], L: [0, 1] }.
|
||||
/// </summary>
|
||||
/// <param name="color">The color to convert.</param>
|
||||
public static double[] RgBtoHsl(Color color)
|
||||
{
|
||||
double h = 0D;
|
||||
double s = 0D;
|
||||
double l;
|
||||
|
||||
// normalize red, green, blue values
|
||||
double r = color.R / 255D;
|
||||
double g = color.G / 255D;
|
||||
double b = color.B / 255D;
|
||||
|
||||
double max = SystemMath.Max(r, SystemMath.Max(g, b));
|
||||
double min = SystemMath.Min(r, SystemMath.Min(g, b));
|
||||
|
||||
// hue
|
||||
if (SystemMath.Abs(max - min) < SimpleColorTransforms.tolerance)
|
||||
h = 0D; // undefined
|
||||
else if ((SystemMath.Abs(max - r) < SimpleColorTransforms.tolerance)
|
||||
&& (g >= b))
|
||||
h = (60D * (g - b)) / (max - min);
|
||||
else if ((SystemMath.Abs(max - r) < SimpleColorTransforms.tolerance)
|
||||
&& (g < b))
|
||||
h = ((60D * (g - b)) / (max - min)) + 360D;
|
||||
else if (SystemMath.Abs(max - g) < SimpleColorTransforms.tolerance)
|
||||
h = ((60D * (b - r)) / (max - min)) + 120D;
|
||||
else if (SystemMath.Abs(max - b) < SimpleColorTransforms.tolerance)
|
||||
h = ((60D * (r - g)) / (max - min)) + 240D;
|
||||
|
||||
// luminance
|
||||
l = (max + min) / 2D;
|
||||
|
||||
// saturation
|
||||
if ((SystemMath.Abs(l) < SimpleColorTransforms.tolerance)
|
||||
|| (SystemMath.Abs(max - min) < SimpleColorTransforms.tolerance))
|
||||
s = 0D;
|
||||
else if ((0D < l)
|
||||
&& (l <= .5D))
|
||||
s = (max - min) / (max + min);
|
||||
else if (l > .5D)
|
||||
s = (max - min) / (2D - (max + min)); //(max-min > 0)?
|
||||
|
||||
return new[]
|
||||
{
|
||||
SystemMath.Max(0D, SystemMath.Min(360D, double.Parse($"{h:0.##}"))),
|
||||
SystemMath.Max(0D, SystemMath.Min(1D, double.Parse($"{s:0.##}"))),
|
||||
SystemMath.Max(0D, SystemMath.Min(1D, double.Parse($"{l:0.##}")))
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Converts HSL to RGB, with a specified output Alpha.
|
||||
/// Arguments are limited to the defined range:
|
||||
/// does not raise exceptions.
|
||||
/// </summary>
|
||||
/// <param name="h">Hue, must be in [0, 360].</param>
|
||||
/// <param name="s">Saturation, must be in [0, 1].</param>
|
||||
/// <param name="l">Luminance, must be in [0, 1].</param>
|
||||
/// <param name="a">Output Alpha, must be in [0, 255].</param>
|
||||
public static Color HsLtoRgb(double h, double s, double l, int a = 255)
|
||||
{
|
||||
h = SystemMath.Max(0D, SystemMath.Min(360D, h));
|
||||
s = SystemMath.Max(0D, SystemMath.Min(1D, s));
|
||||
l = SystemMath.Max(0D, SystemMath.Min(1D, l));
|
||||
a = SystemMath.Max(0, SystemMath.Min(255, a));
|
||||
|
||||
// achromatic argb (gray scale)
|
||||
if (SystemMath.Abs(s) < SimpleColorTransforms.tolerance)
|
||||
{
|
||||
return Color.FromArgb(
|
||||
a,
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}")))));
|
||||
}
|
||||
|
||||
double q = l < .5D
|
||||
? l * (1D + s)
|
||||
: (l + s) - (l * s);
|
||||
double p = (2D * l) - q;
|
||||
|
||||
double hk = h / 360D;
|
||||
double[] T = new double[3];
|
||||
T[0] = hk + (1D / 3D); // Tr
|
||||
T[1] = hk; // Tb
|
||||
T[2] = hk - (1D / 3D); // Tg
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (T[i] < 0D)
|
||||
T[i] += 1D;
|
||||
if (T[i] > 1D)
|
||||
T[i] -= 1D;
|
||||
|
||||
if ((T[i] * 6D) < 1D)
|
||||
T[i] = p + ((q - p) * 6D * T[i]);
|
||||
else if ((T[i] * 2D) < 1)
|
||||
T[i] = q;
|
||||
else if ((T[i] * 3D) < 2)
|
||||
T[i] = p + ((q - p) * ((2D / 3D) - T[i]) * 6D);
|
||||
else
|
||||
T[i] = p;
|
||||
}
|
||||
|
||||
return Color.FromArgb(
|
||||
a,
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{T[0] * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{T[1] * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{T[2] * 255D:0.00}")))));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Converts RGB to HSB. Alpha is ignored.
|
||||
/// Output is: { H: [0, 360], S: [0, 1], B: [0, 1] }.
|
||||
/// </summary>
|
||||
/// <param name="color">The color to convert.</param>
|
||||
public static double[] RgBtoHsb(Color color)
|
||||
{
|
||||
// normalize red, green and blue values
|
||||
double r = color.R / 255D;
|
||||
double g = color.G / 255D;
|
||||
double b = color.B / 255D;
|
||||
|
||||
// conversion start
|
||||
double max = SystemMath.Max(r, SystemMath.Max(g, b));
|
||||
double min = SystemMath.Min(r, SystemMath.Min(g, b));
|
||||
|
||||
double h = 0D;
|
||||
if ((SystemMath.Abs(max - r) < SimpleColorTransforms.tolerance)
|
||||
&& (g >= b))
|
||||
h = (60D * (g - b)) / (max - min);
|
||||
else if ((SystemMath.Abs(max - r) < SimpleColorTransforms.tolerance)
|
||||
&& (g < b))
|
||||
h = ((60D * (g - b)) / (max - min)) + 360D;
|
||||
else if (SystemMath.Abs(max - g) < SimpleColorTransforms.tolerance)
|
||||
h = ((60D * (b - r)) / (max - min)) + 120D;
|
||||
else if (SystemMath.Abs(max - b) < SimpleColorTransforms.tolerance)
|
||||
h = ((60D * (r - g)) / (max - min)) + 240D;
|
||||
|
||||
double s = SystemMath.Abs(max) < SimpleColorTransforms.tolerance
|
||||
? 0D
|
||||
: 1D - (min / max);
|
||||
|
||||
return new[]
|
||||
{
|
||||
SystemMath.Max(0D, SystemMath.Min(360D, h)),
|
||||
SystemMath.Max(0D, SystemMath.Min(1D, s)),
|
||||
SystemMath.Max(0D, SystemMath.Min(1D, max))
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Converts HSB to RGB, with a specified output Alpha.
|
||||
/// Arguments are limited to the defined range:
|
||||
/// does not raise exceptions.
|
||||
/// </summary>
|
||||
/// <param name="h">Hue, must be in [0, 360].</param>
|
||||
/// <param name="s">Saturation, must be in [0, 1].</param>
|
||||
/// <param name="b">Brightness, must be in [0, 1].</param>
|
||||
/// <param name="a">Output Alpha, must be in [0, 255].</param>
|
||||
public static Color HsBtoRgb(double h, double s, double b, int a = 255)
|
||||
{
|
||||
h = SystemMath.Max(0D, SystemMath.Min(360D, h));
|
||||
s = SystemMath.Max(0D, SystemMath.Min(1D, s));
|
||||
b = SystemMath.Max(0D, SystemMath.Min(1D, b));
|
||||
a = SystemMath.Max(0, SystemMath.Min(255, a));
|
||||
|
||||
double r = 0D;
|
||||
double g = 0D;
|
||||
double bl = 0D;
|
||||
|
||||
if (SystemMath.Abs(s) < SimpleColorTransforms.tolerance)
|
||||
r = g = bl = b;
|
||||
else
|
||||
{
|
||||
// the argb wheel consists of 6 sectors. Figure out which sector
|
||||
// you're in.
|
||||
double sectorPos = h / 60D;
|
||||
int sectorNumber = (int)SystemMath.Floor(sectorPos);
|
||||
// get the fractional part of the sector
|
||||
double fractionalSector = sectorPos - sectorNumber;
|
||||
|
||||
// calculate values for the three axes of the argb.
|
||||
double p = b * (1D - s);
|
||||
double q = b * (1D - (s * fractionalSector));
|
||||
double t = b * (1D - (s * (1D - fractionalSector)));
|
||||
|
||||
// assign the fractional colors to r, g, and b based on the sector
|
||||
// the angle is in.
|
||||
switch (sectorNumber)
|
||||
{
|
||||
case 0:
|
||||
r = b;
|
||||
g = t;
|
||||
bl = p;
|
||||
break;
|
||||
case 1:
|
||||
r = q;
|
||||
g = b;
|
||||
bl = p;
|
||||
break;
|
||||
case 2:
|
||||
r = p;
|
||||
g = b;
|
||||
bl = t;
|
||||
break;
|
||||
case 3:
|
||||
r = p;
|
||||
g = q;
|
||||
bl = b;
|
||||
break;
|
||||
case 4:
|
||||
r = t;
|
||||
g = p;
|
||||
bl = b;
|
||||
break;
|
||||
case 5:
|
||||
r = b;
|
||||
g = p;
|
||||
bl = q;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Color.FromArgb(
|
||||
a,
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{r * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{g * 255D:0.00}")))),
|
||||
SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{bl * 250D:0.00}")))));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Multiplies the Color's Luminance or Brightness by the argument;
|
||||
/// and optionally specifies the output Alpha.
|
||||
/// </summary>
|
||||
/// <param name="color">The color to transform.</param>
|
||||
/// <param name="colorTransformMode">Transform mode.</param>
|
||||
/// <param name="brightnessTransform">The transformation multiplier.</param>
|
||||
/// <param name="outputAlpha">Can optionally specify the Alpha to directly
|
||||
/// set on the output. If null, then the input <paramref name="color"/>
|
||||
/// Alpha is used.</param>
|
||||
public static Color TransformBrightness(
|
||||
Color color,
|
||||
ColorTransformMode colorTransformMode,
|
||||
double brightnessTransform,
|
||||
byte? outputAlpha = null)
|
||||
{
|
||||
double[] hsl = colorTransformMode == ColorTransformMode.Hsl
|
||||
? SimpleColorTransforms.RgBtoHsl(color)
|
||||
: SimpleColorTransforms.RgBtoHsb(color);
|
||||
if ((SystemMath.Abs(hsl[2]) < SimpleColorTransforms.tolerance)
|
||||
&& (brightnessTransform > 1D))
|
||||
hsl[2] = brightnessTransform - 1D;
|
||||
else
|
||||
hsl[2] *= brightnessTransform;
|
||||
return colorTransformMode == ColorTransformMode.Hsl
|
||||
? SimpleColorTransforms.HsLtoRgb(hsl[0], hsl[1], hsl[2], outputAlpha ?? color.A)
|
||||
: SimpleColorTransforms.HsBtoRgb(hsl[0], hsl[1], hsl[2], outputAlpha ?? color.A);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Multiplies the Color's Saturation, and Luminance or Brightness by the argument;
|
||||
/// and optionally specifies the output Alpha.
|
||||
/// </summary>
|
||||
/// <param name="color">The color to transform.</param>
|
||||
/// <param name="colorTransformMode">Transform mode.</param>
|
||||
/// <param name="saturationTransform">The transformation multiplier.</param>
|
||||
/// <param name="brightnessTransform">The transformation multiplier.</param>
|
||||
/// <param name="outputAlpha">Can optionally specify the Alpha to directly
|
||||
/// set on the output. If null, then the input <paramref name="color"/>
|
||||
/// Alpha is used.</param>
|
||||
public static Color TransformSaturationAndBrightness(
|
||||
Color color,
|
||||
ColorTransformMode colorTransformMode,
|
||||
double saturationTransform,
|
||||
double brightnessTransform,
|
||||
byte? outputAlpha = null)
|
||||
{
|
||||
double[] hsl = colorTransformMode == ColorTransformMode.Hsl
|
||||
? SimpleColorTransforms.RgBtoHsl(color)
|
||||
: SimpleColorTransforms.RgBtoHsb(color);
|
||||
if ((SystemMath.Abs(hsl[1]) < SimpleColorTransforms.tolerance)
|
||||
&& (saturationTransform > 1D))
|
||||
hsl[1] = saturationTransform - 1D;
|
||||
else
|
||||
hsl[1] *= saturationTransform;
|
||||
if ((SystemMath.Abs(hsl[2]) < SimpleColorTransforms.tolerance)
|
||||
&& (brightnessTransform > 1D))
|
||||
hsl[2] = brightnessTransform - 1D;
|
||||
else
|
||||
hsl[2] *= brightnessTransform;
|
||||
return colorTransformMode == ColorTransformMode.Hsl
|
||||
? SimpleColorTransforms.HsLtoRgb(hsl[0], hsl[1], hsl[2], outputAlpha ?? color.A)
|
||||
: SimpleColorTransforms.HsBtoRgb(hsl[0], hsl[1], hsl[2], outputAlpha ?? color.A);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Color by combining R, G, and B from each Color, scaled by the Color's Alpha.
|
||||
/// The R, G, B of each Color is scaled by the Color's Alpha. The R, G, B of both results is
|
||||
/// then added together and divided by 2. The valuea are limited to [0, 255].
|
||||
/// The Alpha of the output Color is specified; and is also limited to [0, 255]
|
||||
/// (does not raise exceptions).
|
||||
/// </summary>
|
||||
/// <param name="color1">Combined by scaling RGB by the A.</param>
|
||||
/// <param name="color2">Combined by scaling RGB by the A.</param>
|
||||
/// <param name="outputAlpha">The Alpha of the output Color.</param>
|
||||
public static Color AlphaCombine(Color color1, Color color2, byte outputAlpha)
|
||||
{
|
||||
double a1 = color1.A / 255D;
|
||||
double a2 = color2.A / 255D;
|
||||
return Color.FromArgb(
|
||||
outputAlpha,
|
||||
(byte)SystemMath.Max(0D, SystemMath.Min(255D, ((color1.R * a1) + (color2.R * a2)) * .5D)),
|
||||
(byte)SystemMath.Max(0D, SystemMath.Min(255D, ((color1.G * a1) + (color2.G * a2)) * .5D)),
|
||||
(byte)SystemMath.Max(0D, SystemMath.Min(255D, ((color1.B * a1) + (color2.B * a2)) * .5D)));
|
||||
}
|
||||
}
|
||||
}
|
27
DarkControls/Controls/TransparentLabel.cs
Normal file
27
DarkControls/Controls/TransparentLabel.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
public class TransparentLabel : Label
|
||||
{
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
const int WM_NCHITTEST = 0x0084;
|
||||
const int HTTRANSPARENT = (-1);
|
||||
|
||||
if (m.Msg == WM_NCHITTEST)
|
||||
{
|
||||
m.Result = (IntPtr)HTTRANSPARENT;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WndProc(ref m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
325
DarkControls/Controls/WindowsDefaultTitleBarButton.cs
Normal file
325
DarkControls/Controls/WindowsDefaultTitleBarButton.cs
Normal file
@ -0,0 +1,325 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkControls.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Button which represents the default close, minimize or maximize buttons of the windows 10 aero theme.
|
||||
/// </summary>
|
||||
[ToolboxItem(true)]
|
||||
public class WindowsDefaultTitleBarButton : NoFocusCueBotton
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the 3 possible types of the windows border buttons.
|
||||
/// </summary>
|
||||
public enum Type
|
||||
{
|
||||
Close,
|
||||
Maximize,
|
||||
Minimize
|
||||
}
|
||||
|
||||
private Pen activeIconColorPen;
|
||||
private Brush activeIconColorBrush;
|
||||
private Brush activeColorBrush;
|
||||
|
||||
/// <summary>
|
||||
/// The type which defines the buttons behaviour.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The type which defines the buttons behaviour.")]
|
||||
public Type ButtonType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The background color of the button when the mouse is inside the buttons bounds.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The background color of the button when the mouse is inside the buttons bounds.")]
|
||||
public Color HoverColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The background color of the button when the button is clicked.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The background color of the button when the button is clicked.")]
|
||||
public Color ClickColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The default color of the icon.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The default color of the icon.")]
|
||||
public Color IconColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon when the mouse is inside the buttons bounds.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The color of the icon when the mouse is inside the buttons bounds.")]
|
||||
public Color HoverIconColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon when the mouse is inside the buttons bounds.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[DefaultValue("2")]
|
||||
[Description("The thickness of the lines making up the icon")]
|
||||
public int IconLineThickness { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon when the button is clicked.
|
||||
/// </summary>
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
[Category("Appearance")]
|
||||
[Description("The color of the icon when the button is clicked.")]
|
||||
public Color ClickIconColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Property which returns the active background color of the button depending on if the button is clicked or hovered.
|
||||
/// </summary>
|
||||
///
|
||||
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
[Browsable(true)]
|
||||
public virtual Color ActiveColor
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.DesignMode == false)
|
||||
{
|
||||
if (this.Clicked)
|
||||
return this.ClickColor;
|
||||
|
||||
if (this.Hovered)
|
||||
return this.HoverColor;
|
||||
|
||||
return BackColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.HoverColor;
|
||||
/* switch (this.ButtonType)
|
||||
{
|
||||
case Type.Close:
|
||||
{
|
||||
return Color.Red;
|
||||
}
|
||||
case Type.Maximize:
|
||||
{
|
||||
return Color.SkyBlue;
|
||||
}
|
||||
case Type.Minimize:
|
||||
{
|
||||
return Color.SkyBlue;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
return Color.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Property which returns the active color of the buttons icon depending on if the button is clicked or hovered.
|
||||
/// </summary>
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
[RefreshProperties(System.ComponentModel.RefreshProperties.All)]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
[Browsable(false)]
|
||||
public virtual Color ActiveIconColor
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.DesignMode == false)
|
||||
{
|
||||
if (this.Clicked)
|
||||
return this.ClickIconColor;
|
||||
|
||||
if (this.Hovered)
|
||||
return this.HoverIconColor;
|
||||
|
||||
return IconColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Color.Black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Property which indicates if the mouse is currently inside the bounds of the button.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
[Browsable(false)]
|
||||
[DefaultValue(false)]
|
||||
public bool Hovered { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Property which indicates if the left mouse button was pressed down inside the buttons bounds. Can be true before the click event is triggered.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
[Browsable(false)]
|
||||
[DefaultValue(false)]
|
||||
public bool Clicked { get; set; }
|
||||
|
||||
public WindowsDefaultTitleBarButton() { }
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e)
|
||||
{
|
||||
base.OnMouseEnter(e);
|
||||
Hovered = true;
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
Hovered = false;
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs mevent)
|
||||
{
|
||||
base.OnMouseDown(mevent);
|
||||
Clicked = true;
|
||||
}
|
||||
|
||||
protected override void OnMouseUp(MouseEventArgs mevent)
|
||||
{
|
||||
base.OnMouseUp(mevent);
|
||||
Clicked = false;
|
||||
}
|
||||
|
||||
protected override void OnClick(EventArgs e)
|
||||
{
|
||||
if (ButtonType == Type.Close)
|
||||
this.FindForm()?.Close();
|
||||
else if (ButtonType == Type.Maximize)
|
||||
this.FindForm().WindowState = this.FindForm().WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized;
|
||||
else
|
||||
this.FindForm().WindowState = FormWindowState.Minimized;
|
||||
|
||||
base.OnClick(e);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pevent)
|
||||
{
|
||||
System.Diagnostics.Trace.WriteLine(pevent.ClipRectangle.ToString());
|
||||
|
||||
activeColorBrush?.Dispose();
|
||||
activeColorBrush = new SolidBrush(ActiveColor);
|
||||
|
||||
pevent.Graphics.FillRectangle(new SolidBrush(ActiveColor), pevent.ClipRectangle);
|
||||
pevent.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
|
||||
activeIconColorBrush?.Dispose();
|
||||
activeIconColorPen?.Dispose();
|
||||
|
||||
activeIconColorBrush = new SolidBrush(ActiveIconColor);
|
||||
activeIconColorPen = new Pen(activeIconColorBrush, IconLineThickness);
|
||||
|
||||
if (ButtonType == Type.Close)
|
||||
{
|
||||
drawCloseIcon(pevent, new Rectangle(0, 0, this.Width, this.Height));
|
||||
}
|
||||
else if (ButtonType == Type.Maximize)
|
||||
{
|
||||
drawMaximizeIcon(pevent, new Rectangle(0, 0, this.Width, this.Height));
|
||||
}
|
||||
else
|
||||
{
|
||||
drawMinimizeIcon(pevent, new Rectangle(0, 0, this.Width, this.Height));
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void drawCloseIcon(PaintEventArgs e, Rectangle drawRect)
|
||||
{
|
||||
int size = 12;
|
||||
e.Graphics.DrawLine(
|
||||
activeIconColorPen,
|
||||
drawRect.X + drawRect.Width / 2 - (size / 2),
|
||||
drawRect.Y + drawRect.Height / 2 - (size / 2),
|
||||
drawRect.X + drawRect.Width / 2 + (size / 2),
|
||||
drawRect.Y + drawRect.Height / 2 + (size / 2));
|
||||
|
||||
e.Graphics.DrawLine(
|
||||
activeIconColorPen,
|
||||
drawRect.X + drawRect.Width / 2 - (size / 2),
|
||||
drawRect.Y + drawRect.Height / 2 + (size / 2),
|
||||
drawRect.X + drawRect.Width / 2 + (size / 2),
|
||||
drawRect.Y + drawRect.Height / 2 - (size / 2));
|
||||
}
|
||||
|
||||
protected virtual void drawMaximizeIcon(PaintEventArgs e, Rectangle drawRect)
|
||||
{
|
||||
if (this.FindForm().WindowState == FormWindowState.Normal)
|
||||
{
|
||||
int size = 10;
|
||||
Rectangle rect = new Rectangle(
|
||||
drawRect.X + drawRect.Width / 2 - (size / 2),
|
||||
drawRect.Y + drawRect.Height / 2 - (size / 2),
|
||||
size, size);
|
||||
Rectangle r2 = new Rectangle(rect.X, rect.Y, rect.Width, 2);
|
||||
e.Graphics.DrawRectangle(activeIconColorPen, rect);
|
||||
|
||||
e.Graphics.FillRectangle(new SolidBrush(activeIconColorPen.Color), r2);
|
||||
}
|
||||
else if (this.FindForm().WindowState == FormWindowState.Maximized)
|
||||
{
|
||||
e.Graphics.DrawRectangle(
|
||||
activeIconColorPen,
|
||||
new Rectangle(
|
||||
drawRect.X + drawRect.Width / 2 - 3,
|
||||
drawRect.Y + drawRect.Height / 2 - 5,
|
||||
8, 8));
|
||||
|
||||
Rectangle rect = new Rectangle(
|
||||
drawRect.X + drawRect.Width / 2 - 5,
|
||||
drawRect.Y + drawRect.Height / 2 - 3,
|
||||
8, 8);
|
||||
|
||||
e.Graphics.FillRectangle(activeIconColorBrush, rect);
|
||||
e.Graphics.DrawRectangle(activeIconColorPen, rect);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void drawMinimizeIcon(PaintEventArgs e, Rectangle drawRect)
|
||||
{
|
||||
int lower = 3;
|
||||
e.Graphics.DrawLine(
|
||||
activeIconColorPen,
|
||||
drawRect.X + drawRect.Width / 2 - 5,
|
||||
drawRect.Y + drawRect.Height / 2 + lower,
|
||||
drawRect.X + drawRect.Width / 2 + 5,
|
||||
drawRect.Y + drawRect.Height / 2 + lower);
|
||||
}
|
||||
}
|
||||
}
|
140
DarkControls/DarkControls.csproj
Normal file
140
DarkControls/DarkControls.csproj
Normal file
@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DarkControls</RootNamespace>
|
||||
<AssemblyName>DarkControls</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Drawing.Design" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\AppIcon.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\CloseButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\CustomCheckedListBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\CustomScrollBar.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkCheckBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkSelectFileButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkTextBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\FlatScrollBar.cs" />
|
||||
<Compile Include="Controls\MaximizeButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\MinimizeButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\NoFocusCueBotton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ProgressBarEx.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\SimpleColorTransforms.cs" />
|
||||
<Compile Include="Controls\TransparentLabel.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\WindowsDefaultTitleBarButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BlankForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BlankForm.Designer.cs" />
|
||||
<Compile Include="Controls\CustomStatusStrip.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utils.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="icons8-crossed-axes-100.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="BlankForm.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="selectFileBtn.Image.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
36
DarkControls/Properties/AssemblyInfo.cs
Normal file
36
DarkControls/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Lib")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Lib")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2023")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("66c94acb-63c7-42a3-9d83-a3801ced4f1c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
103
DarkControls/Properties/Resources.Designer.cs
generated
Normal file
103
DarkControls/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,103 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DarkControls.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DarkControls.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap appIcon1_AppIconImage {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("appIcon1.AppIconImage", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap appIcon1_Image {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("appIcon1.Image", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_crossed_axes_100 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8_crossed_axes_100", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap selectFileBtn_Image {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("selectFileBtn_Image", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
245
DarkControls/Properties/Resources.resx
Normal file
245
DarkControls/Properties/Resources.resx
Normal file
@ -0,0 +1,245 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="appIcon1.AppIconImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="appIcon1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
EAAACxABrSO9dQAABIlJREFUSEvtlWtQlFUYx18rtZomGiYy+8ClCSEucoeFBXZZYVlgMXZhFZaQ5bYS
|
||||
SiJBBWgQ2EVFhEAEEeJeiODUGA6Iw5QzqJM4KOQ0UuFMTd/41DTFUP+nc3aOUDAI2NQnf1/2Of///3nO
|
||||
nnffd1/pIf87NgX0vChXZC3ZJbz4Ohwd9uCIfSEm7HLQJhGtE9ZSmMczPOuQg6O8VzgrY5dKjztno9M1
|
||||
n8gxG8NOu8necTe6nLLR72KgDSI2j0spbeCeJcOzrIf38hl8logtj3smsgKLiDzMGNDkYqOQJbcMXPTI
|
||||
wF6xnIdrbpm4KJaSRoONvJfPcE9HlpCXYqOgp4LTEBBows1ANsBspvXCkoLS8YI8HdP+JjIIaR6ucY9n
|
||||
hCSZfWh9IPuCfJY8FTJrDZ4WliSFGfFejBlDKhN+lBtxR5mGEoPLwqVTpJK9MhnjYRnoZ5+n/vFbltIj
|
||||
XFNloo9neFY4Ep+hTEWJPAlT20z4WZuFIb6XFKpHw563iGo6QbFpuOvuDifRI4UbyDYqEd9FGMkQqafw
|
||||
6CTMCGserkUlIIJnWHZKm0K2wpKcnbElLhN3W9uJ8t4kCmZ7WQx1NKpLS4iaOucQn4KZEBm8uR6XgDva
|
||||
HUgzxJEPq8f0iRjUJ6DZ0sSIT8BprsUZcINnYg1k0iVgintBfuS504SZ7k+IDhUTRWhRbWm6h0aFmvfZ
|
||||
STva/0ByEqb1EThg1GE2RYdzRj2RUY8wnkvUYzApDlXJOjTu1GOIazuYxzOWbDx+16tR8moyfvq0h+hD
|
||||
NlPNZvPcEnQKVFcVEJ39eG523y6iXZEoTtUhJv0VfJARi6tmA1nxXNp2zJm2Y5jXGWpYZ2hx1cQyPMt6
|
||||
ivIyifjJKtksXciiky0mSY6aBhas2keU4AuFkKVsLQ7kRGMwN5paX4tGL9fM4WSVE4XR7BgctIQYRi+E
|
||||
HmH9texkKUHLnGwxe5U4WaBmP3QkNgvJQr4a3+dr8CWvc9mtXhiJH5j2rcUUFMViE+/NVYgbZLUUqhBW
|
||||
ym57sZQOqtBWvA2f8bpUQc8Uq3C5RE1vM62LefM3ErHHhveK5YNREYqT5UoM8JpvdkiB2xUK/HpGoke5
|
||||
VqbEULkCdbz+11TKUdUQRlQXCLtjMjxRGYTJwyEoPByM/cy7VcP+yo4HkD3PHAvCUdH2YNTL0FIrwy8n
|
||||
QhDzkRwedQG4USPDO8KWWF1RJ6PrdXK41gdDe4JnA9Ak7LXR6of20374ptEXBT0yWDf74usm/4XN7sG0
|
||||
ihZfXGv0IatTvihkPbfb/NAi7NXR7YH6XleMdXhQ2YiCHuvywkS7N0qFvYQOb1R0eeImSbSuw4vKzrhg
|
||||
vHsraoV9f/pcsL/XH9c6pueUfYF4rt8NE71bF56z5TjrgfJzbhj/3Iee7Zn8TcVmjPU5I0fYy/OFM3ou
|
||||
+P357mD7bOKAKybPOy+9jMtx/mWUD7jg1kjzbNIFHxxnvStf2kFH8hxxxOgVW4wOb0GekFfNsBPe4L2X
|
||||
HHH5ktPCm+e+XN9MT15xwCaxXDNfvQSbyb+9Ux/yHyJJfwHAIJQLdFWq8gAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="icons8_crossed_axes_100" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\icons8-crossed-axes-100.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="selectFileBtn_Image" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\selectFileBtn.Image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
26
DarkControls/Utils.cs
Normal file
26
DarkControls/Utils.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DarkControls
|
||||
{
|
||||
public class Utils
|
||||
{
|
||||
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
|
||||
public static extern IntPtr CreateRoundRectRgn
|
||||
(
|
||||
int nLeftRect, // x-coordinate of upper-left corner
|
||||
int nTopRect, // y-coordinate of upper-left corner
|
||||
int nRightRect, // x-coordinate of lower-right corner
|
||||
int nBottomRect, // y-coordinate of lower-right corner
|
||||
int nWidthEllipse, // width of ellipse
|
||||
int nHeightEllipse // height of ellipse
|
||||
);
|
||||
|
||||
public static int WM_NCHITTEST = 0x84;
|
||||
public static int HT_CAPTION = 0x2;
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
DarkControls/selectFileBtn.Image.png
Normal file
BIN
DarkControls/selectFileBtn.Image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 690 B |
@ -3,39 +3,55 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.4.33205.214
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KsDumperClient", "KsDumperClient\KsDumperClient.csproj", "{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KsDumper11", "KsDumper11\KsDumper11.csproj", "{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DarkControls", "..\DarkControls\DarkControls\DarkControls.csproj", "{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DarkControls", "DarkControls\DarkControls.csproj", "{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{79B0AE0A-4D49-4102-9971-04F5375BF272}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.gitignore = .gitignore
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|x64.Build.0 = Debug|x64
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Debug|x86.Build.0 = Debug|x86
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|x64.ActiveCfg = Release|x64
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|x64.Build.0 = Release|x64
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|x86.ActiveCfg = Release|x86
|
||||
{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}.Release|x86.Build.0 = Release|x86
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|x64.Build.0 = Debug|x64
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|x64.ActiveCfg = Release|x64
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|x64.Build.0 = Release|x64
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{66C94ACB-63C7-42A3-9D83-A3801CED4F1C}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B97C5D1A-00B8-411D-9716-A3805DA64FD6}
|
||||
SolutionGuid = {EBFFF900-7478-45AA-95F6-F453BC9C3035}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using KsDumperClient.Utility;
|
||||
using KsDumper11.Utility;
|
||||
|
||||
namespace KsDumperClient.Driver
|
||||
namespace KsDumper11.Driver
|
||||
{
|
||||
// Token: 0x02000014 RID: 20
|
||||
public class DriverInterface
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using KsDumperClient.Utility;
|
||||
using KsDumper11.Utility;
|
||||
|
||||
namespace KsDumperClient.Driver
|
||||
namespace KsDumper11.Driver
|
||||
{
|
||||
// Token: 0x02000015 RID: 21
|
||||
public static class Operations
|
@ -1,4 +1,4 @@
|
||||
namespace KsDumperClient
|
||||
namespace KsDumper11
|
||||
{
|
||||
// Token: 0x02000002 RID: 2
|
||||
public partial class Dumper : global::System.Windows.Forms.Form
|
||||
@ -35,7 +35,7 @@
|
||||
this.refreshBtn = new System.Windows.Forms.Button();
|
||||
this.autoRefreshCheckBox = new DarkControls.Controls.DarkCheckBox();
|
||||
this.hideSystemProcessBtn = new System.Windows.Forms.Button();
|
||||
this.processList = new KsDumperClient.Utility.ProcessListView();
|
||||
this.processList = new KsDumper11.Utility.ProcessListView();
|
||||
this.PIDHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.NameHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.PathHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
@ -128,9 +128,8 @@
|
||||
//
|
||||
// appIcon1
|
||||
//
|
||||
this.appIcon1.AppIconImage = global::KsDumperClient.Properties.Resources.icons8_crossed_axes_100;
|
||||
this.appIcon1.AppIconImage = global::KsDumper11.Properties.Resources.icons8_crossed_axes_100;
|
||||
this.appIcon1.DragForm = this;
|
||||
this.appIcon1.Image = ((System.Drawing.Image)(resources.GetObject("appIcon1.Image")));
|
||||
this.appIcon1.Location = new System.Drawing.Point(5, 4);
|
||||
this.appIcon1.Name = "appIcon1";
|
||||
this.appIcon1.Scale = 3.5F;
|
||||
@ -315,7 +314,7 @@
|
||||
private global::System.ComponentModel.IContainer components = null;
|
||||
|
||||
// Token: 0x04000013 RID: 19
|
||||
private global::KsDumperClient.Utility.ProcessListView processList;
|
||||
private global::KsDumper11.Utility.ProcessListView processList;
|
||||
|
||||
// Token: 0x04000014 RID: 20
|
||||
private global::System.Windows.Forms.ColumnHeader PIDHeader;
|
@ -8,11 +8,11 @@ using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using DarkControls;
|
||||
using DarkControls.Controls;
|
||||
using KsDumperClient.Driver;
|
||||
using KsDumperClient.PE;
|
||||
using KsDumperClient.Utility;
|
||||
using KsDumper11.Driver;
|
||||
using KsDumper11.PE;
|
||||
using KsDumper11.Utility;
|
||||
|
||||
namespace KsDumperClient
|
||||
namespace KsDumper11
|
||||
{
|
||||
// Token: 0x02000002 RID: 2
|
||||
public partial class Dumper : Form
|
@ -6,8 +6,8 @@
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{7881B99D-0B5A-44E7-AF34-80A0ECFFD5DB}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>KsDumperClient</RootNamespace>
|
||||
<AssemblyName>KsDumperClient</AssemblyName>
|
||||
<RootNamespace>KsDumper11</RootNamespace>
|
||||
<AssemblyName>KsDumper11</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
@ -154,7 +154,6 @@
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include=".gitignore" />
|
||||
<Content Include="Driver\drv64.dll">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class PE32File : PEFile
|
||||
{
|
@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class PE32Header
|
||||
{
|
@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class PE64File : PEFile
|
||||
{
|
@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class PE64Header
|
||||
{
|
@ -1,8 +1,8 @@
|
||||
using System.IO;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class DOSHeader
|
||||
{
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public static class NativePEStructs
|
||||
{
|
@ -2,7 +2,7 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public abstract class PEFile
|
||||
{
|
@ -1,8 +1,8 @@
|
||||
using System.IO;
|
||||
|
||||
using static KsDumperClient.PE.NativePEStructs;
|
||||
using static KsDumper11.PE.NativePEStructs;
|
||||
|
||||
namespace KsDumperClient.PE
|
||||
namespace KsDumper11.PE
|
||||
{
|
||||
public class PESection
|
||||
{
|
@ -1,11 +1,11 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using KsDumperClient.Driver;
|
||||
using KsDumperClient.PE;
|
||||
using KsDumperClient.Utility;
|
||||
using KsDumper11.Driver;
|
||||
using KsDumper11.PE;
|
||||
using KsDumper11.Utility;
|
||||
|
||||
namespace KsDumperClient
|
||||
namespace KsDumper11
|
||||
{
|
||||
// Token: 0x02000003 RID: 3
|
||||
public class ProcessDumper
|
@ -3,10 +3,10 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using KsDumperClient.Driver;
|
||||
using KsDumperClient.Utility;
|
||||
using KsDumper11.Driver;
|
||||
using KsDumper11.Utility;
|
||||
|
||||
namespace KsDumperClient
|
||||
namespace KsDumper11
|
||||
{
|
||||
// Token: 0x02000004 RID: 4
|
||||
public class ProcessSummary
|
@ -3,9 +3,9 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Windows.Forms;
|
||||
using KsDumperClient.Driver;
|
||||
using KsDumper11.Driver;
|
||||
|
||||
namespace KsDumperClient
|
||||
namespace KsDumper11
|
||||
{
|
||||
// Token: 0x02000005 RID: 5
|
||||
internal static class Program
|
@ -8,7 +8,7 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace KsDumperClient.Properties {
|
||||
namespace KsDumper11.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ namespace KsDumperClient.Properties {
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("KsDumperClient.Properties.Resources", typeof(Resources).Assembly);
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("KsDumper11.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
26
KsDumper11/Properties/Settings.Designer.cs
generated
Normal file
26
KsDumper11/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace KsDumper11.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
|
||||
namespace KsDumperClient.Utility
|
||||
namespace KsDumper11.Utility
|
||||
{
|
||||
// Token: 0x02000009 RID: 9
|
||||
public static class Logger
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace KsDumperClient.Utility
|
||||
namespace KsDumper11.Utility
|
||||
{
|
||||
// Token: 0x0200000A RID: 10
|
||||
public static class MarshalUtility
|
@ -7,7 +7,7 @@ using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace KsDumperClient.Utility
|
||||
namespace KsDumper11.Utility
|
||||
{
|
||||
// Token: 0x0200000B RID: 11
|
||||
public class ProcessListView : ListView
|
@ -3,7 +3,7 @@ using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace KsDumperClient.Utility
|
||||
namespace KsDumper11.Utility
|
||||
{
|
||||
// Token: 0x02000008 RID: 8
|
||||
public static class WinApi
|
BIN
KsDumper11/icons8-crossed-axes-100.png
Normal file
BIN
KsDumper11/icons8-crossed-axes-100.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
26
KsDumperClient/Properties/Settings.Designer.cs
generated
26
KsDumperClient/Properties/Settings.Designer.cs
generated
@ -1,26 +0,0 @@
|
||||
using System;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Configuration;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace KsDumperClient.Properties
|
||||
{
|
||||
// Token: 0x02000007 RID: 7
|
||||
[CompilerGenerated]
|
||||
[GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
|
||||
internal sealed partial class Settings : ApplicationSettingsBase
|
||||
{
|
||||
// Token: 0x1700000C RID: 12
|
||||
// (get) Token: 0x06000052 RID: 82 RVA: 0x000044A8 File Offset: 0x000026A8
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return Settings.defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000035 RID: 53
|
||||
private static Settings defaultInstance = (Settings)SettingsBase.Synchronized(new Settings());
|
||||
}
|
||||
}
|
50
README.md
50
README.md
@ -1 +1,51 @@
|
||||
# KsDumper-11
|
||||
# KsDumper
|
||||
![Demo](https://i.imgur.com/6XyMDxa.gif)
|
||||
^New Demo gif comming soon
|
||||
|
||||
## Features
|
||||
- Auto dumping of selected exe.
|
||||
- Auto Refresh (every 100ms)
|
||||
- Suspend, resume, kill process
|
||||
- Dump any process main module using a kernel driver (both x86 and x64)
|
||||
- Rebuild PE32/PE64 header and sections
|
||||
- Works on protected system processes & processes with stripped handles (anti-cheats)
|
||||
- Works on WINDOWS 11, it doesnt crash anymore!
|
||||
![Dev Channel Insider Build Win 11 Ksdumper](https://cdn.discordapp.com/attachments/1022996250037076047/1066526468831723590/image.png)
|
||||
|
||||
**Note**: Import table isn't rebuilt.
|
||||
|
||||
## Usage
|
||||
The old way of loading the unsigned ksDumper.sys kernel driver was to use the capcom exploit to map it, this got patched in windows 11.
|
||||
This one loads the driver with Kernel Driver Utility, or KDU for short.
|
||||
I could not get the main fork of the program to work when being built from source.
|
||||
|
||||
This one does though.
|
||||
https://github.com/morelli690/KDU_kernel_bypass_/blob/master/Bin/kdu.exe
|
||||
|
||||
All driver loading is now automated, i plan on putting in a splash screen till the driver loads.
|
||||
For now, the client wont open until the driver has been loaded, if it fails, it exits.
|
||||
I tried to build a logger to output kdu's console output to a file, however it writes black always. Known issue
|
||||
|
||||
**Note**: The driver stays loaded until you reboot, so if you close KsDumperClient.exe, you can just reopen it !
|
||||
**Note2**: Even though it can dump both x86 & x64 processes, this has to run on x64 Windows.
|
||||
|
||||
## Disclaimer
|
||||
This project has been made available for informational and educational purposes only.
|
||||
The driver source is not included because i couldnt ever get it to compile on my system. The source can be found on the original reop.
|
||||
Considering the nature of this project, it is highly recommended to run it in a `Virtual Environment`. I am not responsible for any crash or damage that could happen to your system.
|
||||
|
||||
**Important**: This tool makes no attempt at hiding itself. If you target protected games, the anti-cheat might flag this as a cheat and ban you after a while. Use a `Virtual Environment` !
|
||||
|
||||
## References
|
||||
- https://github.com/hfiref0x/KDU
|
||||
- https://github.com/morelli690/KDU_kernel_bypass_/blob/master/Bin/kdu.exe
|
||||
- https://github.com/not-wlan/drvmap
|
||||
- https://github.com/Zer0Mem0ry/KernelBhop
|
||||
- https://github.com/NtQuery/Scylla/
|
||||
- http://terminus.rewolf.pl/terminus/
|
||||
- https://www.unknowncheats.me/
|
||||
|
||||
## Compile Yourself
|
||||
- Requires Visual Studio 2022
|
||||
- Requires .NET 4.8
|
Loading…
Reference in New Issue
Block a user