300 lines
12 KiB
C#
300 lines
12 KiB
C#
|
|
using System;
|
||
|
|
using System.ComponentModel;
|
||
|
|
using System.Drawing;
|
||
|
|
using System.Drawing.Design;
|
||
|
|
using System.Windows.Forms;
|
||
|
|
using System.Windows.Forms.Design;
|
||
|
|
using System.Drawing.Drawing2D;
|
||
|
|
|
||
|
|
namespace ShapeControl
|
||
|
|
{
|
||
|
|
internal class FileSaveEditorControl : System.Windows.Forms.UserControl
|
||
|
|
{
|
||
|
|
private System.Windows.Forms.TrackBar trackBarAlpha;
|
||
|
|
private System.Windows.Forms.TrackBar trackBarRed;
|
||
|
|
private System.Windows.Forms.TrackBar trackBarGreen;
|
||
|
|
private System.Windows.Forms.TrackBar trackBarBlue;
|
||
|
|
private System.Windows.Forms.Label label1;
|
||
|
|
private System.Windows.Forms.Label label2;
|
||
|
|
private System.Windows.Forms.Label label3;
|
||
|
|
private System.Windows.Forms.Label label4;
|
||
|
|
|
||
|
|
public Color color,old_color;
|
||
|
|
private System.Windows.Forms.Label labelColor;
|
||
|
|
private System.Windows.Forms.Panel panelColor;
|
||
|
|
//private Bitmap bm;
|
||
|
|
|
||
|
|
public FileSaveEditorControl(Color initial_color)
|
||
|
|
{
|
||
|
|
this.color = initial_color;
|
||
|
|
this.old_color =initial_color;
|
||
|
|
InitializeComponent();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
private void InitializeComponent()
|
||
|
|
{
|
||
|
|
this.trackBarAlpha = new System.Windows.Forms.TrackBar();
|
||
|
|
this.trackBarRed = new System.Windows.Forms.TrackBar();
|
||
|
|
this.trackBarGreen = new System.Windows.Forms.TrackBar();
|
||
|
|
this.trackBarBlue = new System.Windows.Forms.TrackBar();
|
||
|
|
this.label1 = new System.Windows.Forms.Label();
|
||
|
|
this.label2 = new System.Windows.Forms.Label();
|
||
|
|
this.label3 = new System.Windows.Forms.Label();
|
||
|
|
this.label4 = new System.Windows.Forms.Label();
|
||
|
|
this.panelColor = new System.Windows.Forms.Panel();
|
||
|
|
this.labelColor = new System.Windows.Forms.Label();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarAlpha)).BeginInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarRed)).BeginInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarGreen)).BeginInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarBlue)).BeginInit();
|
||
|
|
this.panelColor.SuspendLayout();
|
||
|
|
this.SuspendLayout();
|
||
|
|
//
|
||
|
|
// trackBarAlpha
|
||
|
|
//
|
||
|
|
this.trackBarAlpha.Location = new System.Drawing.Point(40, 3);
|
||
|
|
this.trackBarAlpha.Maximum = 255;
|
||
|
|
this.trackBarAlpha.Name = "trackBarAlpha";
|
||
|
|
this.trackBarAlpha.Size = new System.Drawing.Size(94, 45);
|
||
|
|
this.trackBarAlpha.TabIndex = 0;
|
||
|
|
this.trackBarAlpha.TickFrequency = 20;
|
||
|
|
this.trackBarAlpha.ValueChanged += new System.EventHandler(this.trackBar_ValueChanged);
|
||
|
|
//
|
||
|
|
// trackBarRed
|
||
|
|
//
|
||
|
|
this.trackBarRed.Location = new System.Drawing.Point(40, 33);
|
||
|
|
this.trackBarRed.Maximum = 255;
|
||
|
|
this.trackBarRed.Name = "trackBarRed";
|
||
|
|
this.trackBarRed.Size = new System.Drawing.Size(94, 45);
|
||
|
|
this.trackBarRed.TabIndex = 1;
|
||
|
|
this.trackBarRed.TickFrequency = 20;
|
||
|
|
this.trackBarRed.ValueChanged += new System.EventHandler(this.trackBar_ValueChanged);
|
||
|
|
//
|
||
|
|
// trackBarGreen
|
||
|
|
//
|
||
|
|
this.trackBarGreen.Location = new System.Drawing.Point(40, 65);
|
||
|
|
this.trackBarGreen.Maximum = 255;
|
||
|
|
this.trackBarGreen.Name = "trackBarGreen";
|
||
|
|
this.trackBarGreen.Size = new System.Drawing.Size(94, 45);
|
||
|
|
this.trackBarGreen.TabIndex = 2;
|
||
|
|
this.trackBarGreen.TickFrequency = 20;
|
||
|
|
this.trackBarGreen.ValueChanged += new System.EventHandler(this.trackBar_ValueChanged);
|
||
|
|
//
|
||
|
|
// trackBarBlue
|
||
|
|
//
|
||
|
|
this.trackBarBlue.Location = new System.Drawing.Point(40, 97);
|
||
|
|
this.trackBarBlue.Maximum = 255;
|
||
|
|
this.trackBarBlue.Name = "trackBarBlue";
|
||
|
|
this.trackBarBlue.Size = new System.Drawing.Size(94, 45);
|
||
|
|
this.trackBarBlue.TabIndex = 3;
|
||
|
|
this.trackBarBlue.TickFrequency = 20;
|
||
|
|
this.trackBarBlue.ValueChanged += new System.EventHandler(this.trackBar_ValueChanged);
|
||
|
|
//
|
||
|
|
// label1
|
||
|
|
//
|
||
|
|
this.label1.Location = new System.Drawing.Point(8, 6);
|
||
|
|
this.label1.Name = "label1";
|
||
|
|
this.label1.Size = new System.Drawing.Size(40, 24);
|
||
|
|
this.label1.TabIndex = 5;
|
||
|
|
this.label1.Text = "Alpha";
|
||
|
|
//
|
||
|
|
// label2
|
||
|
|
//
|
||
|
|
this.label2.Location = new System.Drawing.Point(8, 38);
|
||
|
|
this.label2.Name = "label2";
|
||
|
|
this.label2.Size = new System.Drawing.Size(48, 24);
|
||
|
|
this.label2.TabIndex = 6;
|
||
|
|
this.label2.Text = "Red";
|
||
|
|
//
|
||
|
|
// label3
|
||
|
|
//
|
||
|
|
this.label3.Location = new System.Drawing.Point(8, 70);
|
||
|
|
this.label3.Name = "label3";
|
||
|
|
this.label3.Size = new System.Drawing.Size(48, 24);
|
||
|
|
this.label3.TabIndex = 7;
|
||
|
|
this.label3.Text = "Green";
|
||
|
|
//
|
||
|
|
// label4
|
||
|
|
//
|
||
|
|
this.label4.Location = new System.Drawing.Point(8, 104);
|
||
|
|
this.label4.Name = "label4";
|
||
|
|
this.label4.Size = new System.Drawing.Size(48, 24);
|
||
|
|
this.label4.TabIndex = 8;
|
||
|
|
this.label4.Text = "Blue";
|
||
|
|
//
|
||
|
|
// panelColor
|
||
|
|
//
|
||
|
|
this.panelColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||
|
|
this.panelColor.Controls.Add(this.labelColor);
|
||
|
|
this.panelColor.Location = new System.Drawing.Point(136, 11);
|
||
|
|
this.panelColor.Name = "panelColor";
|
||
|
|
this.panelColor.Size = new System.Drawing.Size(31, 106);
|
||
|
|
this.panelColor.TabIndex = 9;
|
||
|
|
//
|
||
|
|
// labelColor
|
||
|
|
//
|
||
|
|
this.labelColor.Location = new System.Drawing.Point(-10, -3);
|
||
|
|
this.labelColor.Name = "labelColor";
|
||
|
|
this.labelColor.Size = new System.Drawing.Size(56, 160);
|
||
|
|
this.labelColor.TabIndex = 10;
|
||
|
|
//
|
||
|
|
// FileSaveEditorControl
|
||
|
|
//
|
||
|
|
this.BackColor = System.Drawing.Color.LightGray;
|
||
|
|
this.Controls.Add(this.trackBarBlue);
|
||
|
|
this.Controls.Add(this.trackBarGreen);
|
||
|
|
this.Controls.Add(this.trackBarRed);
|
||
|
|
this.Controls.Add(this.panelColor);
|
||
|
|
this.Controls.Add(this.trackBarAlpha);
|
||
|
|
this.Controls.Add(this.label4);
|
||
|
|
this.Controls.Add(this.label3);
|
||
|
|
this.Controls.Add(this.label2);
|
||
|
|
this.Controls.Add(this.label1);
|
||
|
|
this.Name = "FileSaveEditorControl";
|
||
|
|
this.Size = new System.Drawing.Size(181, 131);
|
||
|
|
this.Load += new System.EventHandler(this.FileSaveEditorControl_Load);
|
||
|
|
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.FileSaveEditorControl_KeyPress);
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarAlpha)).EndInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarRed)).EndInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarGreen)).EndInit();
|
||
|
|
((System.ComponentModel.ISupportInitialize)(this.trackBarBlue)).EndInit();
|
||
|
|
this.panelColor.ResumeLayout(false);
|
||
|
|
this.ResumeLayout(false);
|
||
|
|
this.PerformLayout();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
private void FileSaveEditorControl_Load(object sender, System.EventArgs e)
|
||
|
|
{
|
||
|
|
int argb=this.color.ToArgb();
|
||
|
|
// the colors are store in the argb value as 4 byte : AARRGGBB
|
||
|
|
byte alpha=(byte)(argb>>24);
|
||
|
|
byte red=(byte)(argb>>16);
|
||
|
|
byte green=(byte)(argb>>8);
|
||
|
|
byte blue=(byte)argb;
|
||
|
|
trackBarAlpha.Value =alpha;
|
||
|
|
trackBarRed.Value =red;
|
||
|
|
trackBarGreen.Value =green;
|
||
|
|
trackBarBlue.Value =blue;
|
||
|
|
|
||
|
|
//Foreground Label on the Color Panel
|
||
|
|
labelColor.BackColor =Color.FromArgb(alpha,red,green,blue);
|
||
|
|
|
||
|
|
//Create the Background Image for Color Panel
|
||
|
|
//The Color Panel is to allow the user to check on Alpha transparency
|
||
|
|
Bitmap bm=new Bitmap(this.panelColor.Width,this.panelColor.Height);
|
||
|
|
this.panelColor.BackgroundImage =bm;
|
||
|
|
Graphics g=Graphics.FromImage(this.panelColor.BackgroundImage);
|
||
|
|
g.FillRectangle(Brushes.White ,0,0,this.panelColor.Width ,this.panelColor.Height );
|
||
|
|
|
||
|
|
//For formating the string
|
||
|
|
StringFormat sf=new StringFormat();
|
||
|
|
sf.Alignment=StringAlignment.Center;
|
||
|
|
sf.LineAlignment=StringAlignment.Center;
|
||
|
|
|
||
|
|
//For rotating the string
|
||
|
|
//If you want the text to be rotated uncomment the 5 lines below and comment off the last line
|
||
|
|
|
||
|
|
//Matrix m = new Matrix();
|
||
|
|
//m.Rotate(90);
|
||
|
|
//m.Translate(this.panelColor.Width, 0, MatrixOrder.Append);
|
||
|
|
//g.Transform = m;
|
||
|
|
//g.DrawString("TEST", new Font("Arial", 16, FontStyle.Bold), Brushes.Black, new Rectangle(0, 0, panelColor.Height, panelColor.Width), sf);
|
||
|
|
|
||
|
|
g.DrawString("TEST",new Font("Arial",16,FontStyle.Bold),Brushes.Black,new Rectangle(0,0,panelColor.Width ,panelColor.Height ),sf);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
private void UpdateColor(int a, int r, int g, int b)
|
||
|
|
{
|
||
|
|
this.color=Color.FromArgb(a,r,g,b);
|
||
|
|
labelColor.BackColor =this.color;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void trackBar_ValueChanged(object sender, System.EventArgs e)
|
||
|
|
{
|
||
|
|
UpdateColor(trackBarAlpha.Value,trackBarRed.Value,trackBarGreen.Value,trackBarBlue.Value);
|
||
|
|
}
|
||
|
|
|
||
|
|
private void FileSaveEditorControl_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
|
||
|
|
{
|
||
|
|
//If the user hit the escape key we restore back the old color
|
||
|
|
if(e.KeyChar.Equals(Keys.Escape))
|
||
|
|
{
|
||
|
|
this.color =this.old_color;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
public class FileSaveEditor : System.Drawing.Design.UITypeEditor
|
||
|
|
{
|
||
|
|
public FileSaveEditor()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
// Indicates whether the UITypeEditor provides a form-based (modal) dialog,
|
||
|
|
// drop down dialog, or no UI outside of the properties window.
|
||
|
|
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
|
||
|
|
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
|
||
|
|
{
|
||
|
|
return UITypeEditorEditStyle.DropDown;
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
// Displays the UI for value selection.
|
||
|
|
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
|
||
|
|
public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
|
||
|
|
{
|
||
|
|
|
||
|
|
//if( value.GetType() != typeof(Color))
|
||
|
|
// return value;
|
||
|
|
|
||
|
|
// Uses the IWindowsFormsEditorService to display a
|
||
|
|
// drop-down UI in the Properties window.
|
||
|
|
IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
|
||
|
|
if( edSvc != null )
|
||
|
|
{
|
||
|
|
//ColorEditorControl editor = new ColorEditorControl((Color)value);
|
||
|
|
//edSvc.DropDownControl(editor);
|
||
|
|
|
||
|
|
//// Return the value in the appropraite data format.
|
||
|
|
//if (value.GetType() == typeof(Color))
|
||
|
|
// return editor.color;
|
||
|
|
|
||
|
|
FormSaveFileEditor sfeditor = new FormSaveFileEditor();
|
||
|
|
edSvc.ShowDialog(sfeditor);
|
||
|
|
|
||
|
|
//if (value.GetType() == typeof(Color))
|
||
|
|
// return sfeditor.color;
|
||
|
|
return sfeditor.filename;
|
||
|
|
|
||
|
|
}
|
||
|
|
return value;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Draws a representation of the property's value.
|
||
|
|
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
|
||
|
|
public override void PaintValue(System.Drawing.Design.PaintValueEventArgs e)
|
||
|
|
{
|
||
|
|
e.Graphics.FillRectangle(new SolidBrush((Color)e.Value),1,1,e.Bounds.Width ,e.Bounds.Height );
|
||
|
|
}
|
||
|
|
|
||
|
|
// Indicates whether the UITypeEditor supports painting a
|
||
|
|
// representation of a property's value.
|
||
|
|
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
|
||
|
|
public override bool GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext context)
|
||
|
|
{
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|