2012年3月4日日曜日

Gradation

Gradation

private Bitmap Test1() {  PointData[] pds = new PointData[3];  pds[0] = new PointData(new PointF(50 , 50) , Color.Red);  pds[1] = new PointData(new PointF(300 , 100) , Color.Green);  pds[2] = new PointData(new PointF(150 , 350) , Color.Blue);   Bitmap bmp = new Bitmap(600 , 600);   using (Graphics g = Graphics.FromImage(bmp))  {   PointData.FillTriangle(g , pds[0] , pds[1] , pds[2]);  }   return bmp; }  private Bitmap Test2() {  Random r = new Random();   PointData[] pds = new PointData[1 + 6];  for (int i = 0; i < pds.Length; i++)  {   PointF p;   Color c;   if (i == 0)   {    p = new PointF(300 , 300);   }   else   {    double rad;    rad = Math.PI * 2 * (i - 1) / (pds.Length - 1);    p = new PointF((float)(300 + 300 * Math.Cos(rad)) , (float)(300 + 300 * Math.Sin(rad)));    }   c = Color.FromArgb(255 , r.Next(255) , r.Next(255) , r.Next(255));    pds[i] = new PointData(p , c);  }    Bitmap bmp = new Bitmap(600 , 600);   using (Graphics g = Graphics.FromImage(bmp))  {   for (int i = 1; i < pds.Length; i++)   {    PointData.Fill(g , pds[0] , pds[0] , pds[i] , pds[i + 1 < pds.Length ? i + 1 : 1]);   }  }   return bmp; }  class PointData {  public PointData(PointF pf , Color c)  {   this.Point = pf;   this.Color = c;  }  public PointF Point;  public Color Color;   /// 2  /// 1  /// 2  ///   /// (0~divide)  ///   public static PointData CalcPointData(PointData p1 , PointData p2 , int divide , int n)  {   if (n == 0)   {    return p1;   }   else if (n == divide)   {    return p2;   }   else   {    float par = (float)n / (float)divide;    float x = (p2.Point.X - p1.Point.X) * par + p1.Point.X;    float y = (p2.Point.Y - p1.Point.Y) * par + p1.Point.Y;    int a = (int)Math.Round(((float)p2.Color.A - (float)p1.Color.A) * par + (float)p1.Color.
あなたは何グループです。A , 0); int r = (int)Math.Round(((float)p2.Color.R - (float)p1.Color.R) * par + (float)p1.Color.R , 0); int g = (int)Math.Round(((float)p2.Color.G - (float)p1.Color.G) * par + (float)p1.Color.G , 0); int b = (int)Math.Round(((float)p2.Color.B - (float)p1.Color.B) * par + (float)p1.Color.B , 0); return new PointData(new PointF(x , y) , Color.FromArgb(a , r , g , b)); } } /// 2 /// 1 /// 2 /// public static System.Drawing.Brush GetBrush(PointData p1 , PointData p2) { if (p1.Color == p2.Color) { return new System.Drawing.SolidBrush(p1.Color); } else { return new System.Drawing.Drawing2D.LinearGradientBrush(p1.Point , p2.Point , p1.Color , p2.Color); } } /// 2 /// /// /// /// public static void DrawLine(Graphics g , PointData pd1 , PointData pd2 , float width) { using (System.Drawing.Brush brush = GetBrush(pd1 , pd2)) { using (System.Drawing.Pen pen = new Pen(brush , width)) { g.DrawLine(pen , pd1.Point , pd2.Point); } } } /// 2 /// /// /// public static float Length(PointData pd1 , PointData pd2) { return (float)Math.Sqrt(Math.Pow((pd1.Point.X - pd2.Point.X) , 2) + Math.Pow((pd1.Point.Y - pd2.Point.
クロスワードパズルの円の意味は何ですか?Y) , 2)); } /// 2IEnumerable /// /// /// /// private static IEnumerable CreateEnumrator(PointData pd1 , PointData pd2 , int div) { for (int i = 0; i <= div; i++) { yield return CalcPointData(pd1 , pd2 , div , i); } } /// IEnumerable /// 1 /// 1 /// 2 /// 2 /// /// private static IEnumerable CreateEnumrator(PointData pd11 , PointData pd12 , PointData pd21 , PointData pd22 , int div) { var ie1 = CreateEnumrator(pd11 , pd12 , div).GetEnumerator(); var ie2 = CreateEnumrator(pd21 , pd22 , div).GetEnumerator(); while (ie1.MoveNext()) { ie2.MoveNext(); yield return new PointData[] { ie1.Current , ie2.
逸脱との適合性は何ですか?Current }; } } /// /// /// 1 /// 1 /// 2 /// 2 /// /// public static void Fill(Graphics g , PointData pd11 , PointData pd12 , PointData pd21 , PointData pd22 , int div) { var ie = CreateEnumrator(pd11 , pd12 , pd21 , pd22 , div); foreach (PointData[] pds in ie) { DrawLine(g , pds[0] , pds[1] , 1); } } /// () /// /// 1 /// 1 /// 2 /// 2 /// public static void Fill(Graphics g , PointData pd11 , PointData pd12 , PointData pd21 , PointData pd22) { float len1 = Length(pd11 , pd12); float len2 = Length(pd21 , pd22); int div = (int)Math.Ceiling(Math.Max(len1 , len2) * 2); // var ie = CreateEnumrator(pd11 , pd12 , pd21 , pd22 , div); foreach (PointData[] pds in ie) { DrawLine(g , pds[0] , pds[1] , 1); } } /// /// /// /// /// public static PointData GetCenterPoint(PointData pd1 , PointData pd2 , PointData pd3) { PointF p1 = pd1.Point; PointF p2 = pd2.Point; PointF p3 = pd3.Point; PointF p12 = new PointF((p1.X + p2.X) / 2 , (p1.Y + p2.Y) / 2); PointF p23 = new PointF((p2.X + p3.X) / 2 , (p2.Y + p3.
Y) / 2); float a12; float a23; float x; float y; a12 = (p12.Y - p3.Y) / (p12.X - p3.X); a23 = (p23.Y - p1.Y) / (p23.X - p1.X); x = (p23.Y - p12.Y - a23 * p23.X + a12 * p12.X) / (a12 - a23); y = a12 * (x - p12.X) + p12.Y; PointF pc = new PointF(x , y); int a = (int)Math.Round(((float)pd1.Color.A + (float)pd2.Color.A + (float)pd3.Color.A) / 3 , 0); int r = (int)Math.Round(((float)pd1.Color.R + (float)pd2.Color.R + (float)pd3.Color.R) / 3 , 0); int g = (int)Math.Round(((float)pd1.Color.G + (float)pd2.Color.G + (float)pd3.Color.G) / 3 , 0); int b = (int)Math.Round(((float)pd1.Color.G + (float)pd2.Color.B + (float)pd3.Color.B) / 3 , 0); Color c = Color.FromArgb(a , r , g , b); return new PointData(pc , c); } // ///// ///// ///// ///// ///// //public static void FillTriangle(Graphics g , PointData pd1 , PointData pd2 , PointData pd3) //{ // PointData pdc = GetCenterPoint(pd1 , pd2 , pd3); // //PointData.Fill(g , pdc , pdc , pd1 , pd2); // //PointData.Fill(g , pdc , pdc , pd2 , pd3); // //PointData.Fill(g , pdc , pdc , pd3 , pd1); // PointData.Fill(g , pdc , pd1 , pdc , pd2); // PointData.Fill(g , pdc , pd2 , pdc , pd3); // PointData.Fill(g , pdc , pd3 , pdc , pd1); //} /// /// /// /// /// public static void FillTriangle(Graphics g , PointData pd1 , PointData pd2 , PointData pd3) { float len01 = PointData.Length(pd1 , pd2); float len12 = PointData.Length(pd2 , pd3); float len21 = PointData.
Length(pd3 , pd1); // if (len01 < len12 && len01 < len21) { PointData pd = pd1; pd1 = pd3; pd3 = pd; } else if (len21 < len01 && len21 < len12) { PointData pd = pd1; pd1 = pd2; pd2 = pd; } PointData.

These are our most popular posts:

画像をHTMLで表示する

画像素材などをホームページ上で表示する方法を紹介しています。 ... HTMLで画像を 表示. では実際に素材サイトからダウンロードした素材をホームページ上に表示するには どうすればいいのでしょう。最近はホームページを制作するための便利なソフトウェアが ... read more

テキスト レイアウトにクライアント描画効果を追加する方法 (Windows)

注 このチュートリアルは、単純に色付きテキストを描画する方法の例を示すのではなく、 カスタムのクライアント描画効果を作成する方法の簡単な例を示すことを目的としてい ます。詳細については、IDWriteTextLayout::SetDrawingEffect のリファレンス ページを ... read more

各頂点からGradationを描画する方法

2011年6月13日 ... 以下の条件において、各頂点からGradationを描画する方法を探しております。 1.正 三角形である 2.正三角形は単位円に内接する 3.正三角形の各頂点(A,B,C)は、 それぞれ異なる色を持つ。各頂点の色は以下の通りである。 A : 赤 RGB(255 ... read more

HTML 特殊文字を表示するには -HTMLの基礎-

そういった特殊な文字を特殊文字を呼び、本文中で利用する場合は、 「ナンバー エンティティ」か「ネームエンティティ」という特別なコードに置き換えて指定しなければ なりません。 例えば・・ ... また特殊文字を記述する場合には、小文字大文字を区別し ます。 read more

Related Posts



0 コメント:

コメントを投稿