2010年4月14日水曜日

カラーピッカーのライブラリ化

最近仕事と別件で忙しく、こうしん出来ず。
べっ べつに飽きたんじゃなからね!

とりあずカラーピッカーしか作ってなかったので成果物としてうpします。

dotnet2.0以降対応

http://ux.getuploader.com/tekitou000/download/2/DOTNET2.0%E3%80%80%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%94%E3%83%83%E3%82%AB%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AAv1.00.zip

うんこでごめんね><

2010年1月10日日曜日

C# カラーピッカーを作ってみた 1

風邪と仕事で更新できなかった><
今こんな感じ


2010年1月3日日曜日

C# カラーピッカーのスライダーを作ってみた

カラーピッカーとかで使うようなグラデーションのかかったスライダーを作ってみました。
相変わらず糞コードです。







  1. using System;  
  2. using System;  
  3. using System.ComponentModel;  
  4. using System.Drawing;  
  5. using System.Windows.Forms;  
  6. using System.Drawing.Drawing2D;  
  7.   
  8. public partial class CSlider : Control  
  9. {  
  10.   
  11.     // イベントの宣言  
  12.     [Description("コントロールの値が変更するとき発生します。")]  
  13.     [Category("アクション")]  
  14.     public event EventHandler ValueChanged;  
  15.   
  16.     // プロパティ  
  17.     private int _maximum = 100;  
  18.     public int Maximum  
  19.     {  
  20.         set  
  21.         {  
  22.             this._maximum = value;  
  23.         }  
  24.         get  
  25.         {  
  26.             return this._maximum;  
  27.         }  
  28.     }  
  29.   
  30.     public int Minimum { getset; }  
  31.     private int _value;  
  32.     public int Value  
  33.     {  
  34.         set  
  35.         {  
  36.             this._value = value;  
  37.             drawGradation();  
  38.             this.Refresh();  
  39.             if (ValueChanged != null && Value <= Minimum && Value >= Maximum) ValueChanged(thisnew EventArgs());  
  40.         }  
  41.         get  
  42.         {  
  43.             return this._value;  
  44.         }  
  45.     }  
  46.     private Color _color1 = Color.Black;  
  47.     public Color Color1  
  48.     {  
  49.         set  
  50.         {  
  51.             this._color1 = value;  
  52.             drawGradation();  
  53.             this.Refresh();  
  54.         }  
  55.         get  
  56.         {  
  57.   
  58.             return this._color1;  
  59.         }  
  60.     }  
  61.   
  62.     private Color _color2 = Color.White;  
  63.     public Color Color2  
  64.     {  
  65.         set  
  66.         {  
  67.             this._color2 = value;  
  68.             drawGradation();  
  69.             this.Refresh();  
  70.         }  
  71.         get  
  72.         {  
  73.   
  74.             return this._color2;  
  75.         }  
  76.     }  
  77.   
  78.     public CSlider()  
  79.     {  
  80.         InitializeComponent();  
  81.   
  82.         this.SetStyle(ControlStyles.ResizeRedraw, true);  
  83.         this.SetStyle(ControlStyles.DoubleBuffer, true);  
  84.         this.SetStyle(ControlStyles.UserPaint, true);  
  85.         this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);  
  86.   
  87.         this.Resize += new System.EventHandler(this.CSlider_Resize);  
  88.         this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.CSlider_MouseMove);  
  89.         this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CSlider_MouseDown);  
  90.         this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.CSlider_MouseUp);  
  91.         this.MouseLeave += new System.EventHandler(this.CSlider_MouseLeave);  
  92.         this.MouseEnter += new System.EventHandler(this.CSlider_MouseEnter);  
  93.   
  94.         drawTick();  
  95.     }  
  96.   
  97.     // 描画  
  98.     //針の描画  
  99.     private Bitmap tick;  
  100.     private void drawTick()  
  101.     {  
  102.         tick = new Bitmap(10, 10);  
  103.   
  104.         Graphics g = Graphics.FromImage(tick);  
  105.         g.SmoothingMode = SmoothingMode.HighQuality;  
  106.         Point[] point = {   new Point(5,1), new Point(9,5),  
  107.                                 new Point(9,7), new Point(8,8),  
  108.                                 new Point(2,8), new Point(1,7),  
  109.                                 new Point(1,5), new Point(5,1) };  
  110.         Brush b = new SolidBrush(Color.White);  
  111.         g.FillPolygon(b, point);  
  112.         Pen p = new Pen(Color.Black, 1);  
  113.         if (activeFlag == true)  
  114.         {  
  115.             p = new Pen(Color.Brown, 1);  
  116.         }  
  117.         g.DrawLines(p, point);  
  118.         g.Dispose();  
  119.     }  
  120.   
  121.     protected override void OnPaint(PaintEventArgs pe)  
  122.     {  
  123.         base.OnPaint(pe);  
  124.   
  125.         pe.Graphics.DrawImage(gradation, 5, 0, gradation.Width, gradation.Height);  
  126.         pe.Graphics.DrawImage(tick, (Value * gradation.Width) / (Maximum - Minimum), gradation.Height);  
  127.   
  128.     }  
  129.   
  130.     //グラデーションの描画  
  131.     private Bitmap gradation;  
  132.     private void drawGradation()  
  133.     {  
  134.         if (this.Width > 10 && this.Height > 10)  
  135.         {  
  136.             Size gradationSize = new Size(this.Width - 10, this.Height - 10);  
  137.   
  138.             gradation = new Bitmap(gradationSize.Width, gradationSize.Height);  
  139.             Graphics g = Graphics.FromImage(gradation);  
  140.             LinearGradientBrush gb =  
  141.                 new LinearGradientBrush(new Point(0, 0), new Point(gradationSize.Width, gradationSize.Height),  
  142.                     Color1, Color2);  
  143.             g.FillRectangle(gb, new Rectangle(0, 0, gradationSize.Width, gradationSize.Height));  
  144.   
  145.             //枠線  
  146.             Pen p = new Pen(Color.Black, 1);  
  147.             if (activeFlag == true)  
  148.             {  
  149.                 p = new Pen(Color.Brown, 1);  
  150.             }  
  151.   
  152.             g.DrawRectangle(p, 0, 0, gradationSize.Width - 1, gradationSize.Height - 1);  
  153.             g.Dispose();  
  154.         }  
  155.   
  156.     }  
  157.   
  158.   
  159.     //リサイズ時、グラデーションの再描画  
  160.     private void CSlider_Resize(object sender, EventArgs e)  
  161.     {  
  162.         drawGradation();  
  163.         this.Refresh();  
  164.     }  
  165.   
  166.   
  167.     //プロパティ  
  168.     private bool mouseDown = false;  
  169.     private void CSlider_MouseDown(object sender, MouseEventArgs e)  
  170.     {  
  171.         Value = (int)(((float)(e.X - 5) / (this.Width - 10)) * (Maximum - Minimum));  
  172.         if (Value <= Minimum) Value = Minimum;  
  173.         if (Value >= Maximum) Value = Maximum;  
  174.   
  175.         this.Refresh();  
  176.   
  177.         if (ValueChanged != null) ValueChanged(thisnew EventArgs());  
  178.   
  179.         mouseDown = true;  
  180.     }  
  181.   
  182.     private void CSlider_MouseMove(object sender, MouseEventArgs e)  
  183.     {  
  184.         if (mouseDown == true)  
  185.         {  
  186.             Value = (int)(((float)(e.X - 5) / (this.Width - 10)) * (Maximum - Minimum));  
  187.             if (Value <= Minimum) Value = Minimum;  
  188.             if (Value >= Maximum) Value = Maximum;  
  189.   
  190.             this.Refresh();  
  191.   
  192.             if (ValueChanged != null) ValueChanged(thisnew EventArgs());  
  193.         }  
  194.     }  
  195.   
  196.     private void CSlider_MouseUp(object sender, MouseEventArgs e)  
  197.     {  
  198.         mouseDown = false;  
  199.     }  
  200.   
  201.   
  202.     private bool activeFlag = false;  
  203.     private void CSlider_MouseEnter(object sender, EventArgs e)  
  204.     {  
  205.         activeFlag = true;  
  206.   
  207.         drawGradation();  
  208.         drawTick();  
  209.         this.Refresh();  
  210.     }  
  211.   
  212.     private void CSlider_MouseLeave(object sender, EventArgs e)  
  213.     {  
  214.         activeFlag = false;  
  215.   
  216.         drawGradation();  
  217.         drawTick();  
  218.         this.Refresh();  
  219.     }  
  220.   
  221. }  

//日記 すき焼きともつ鍋食べた。うまかった。