Ejemplo n.º 1
0
        /// <summary>
        /// 指定した Bitmap の或る色の Pixel を全て他の色に置き換えます。
        /// </summary>
        /// <param name="bmp">変換を施す対象の Bitmap を指定します。</param>
        /// <param name="before">置き換え前の色を指定します。</param>
        /// <param name="after">置き換え後の色を指定します。</param>
        public static void ReplaceColor(System.Drawing.Bitmap bmp, Color32Argb before, Color32Argb after)
        {
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
            Imaging.BitmapData       data = bmp.LockBits(rect, Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppArgb);

            System.IntPtr scan0 = data.Scan0;
            int           M     = bmp.Width * bmp.Height;

            unsafe {
                Color32Argb *p  = (Color32Argb *)(void *)scan0;
                Color32Argb *pM = p + M;
                for (; p < pM; p++)
                {
                    if (*p == before)
                    {
                        *p = after;
                    }
                }
            }
            bmp.UnlockBits(data);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 指定した色で指定した System.Drawing.Bitmap を塗りつぶして返します。
        /// 透明度は保持します。
        /// </summary>
        /// <param name="source">塗りつぶす前の画像を指定します。</param>
        /// <param name="color">塗り潰すのに使用する色を指定します。</param>
        /// <returns>塗り潰した結果の Bitmap を返します。</returns>
        public static System.Drawing.Bitmap ClearRGB(System.Drawing.Bitmap source, Color32Argb color)
        {
            System.Drawing.Bitmap    bmp  = (System.Drawing.Bitmap)source.Clone();
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
            Imaging.BitmapData       data = bmp.LockBits(rect, Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppArgb);

            System.IntPtr scan0 = data.Scan0;
            int           M     = bmp.Width * bmp.Height;

            unsafe {
                Color32Argb *p = (Color32Argb *)(void *)scan0;
                for (int cnt = 0; cnt < M; cnt++)
                {
                    p->R = color.R;
                    p->G = color.G;
                    p->B = color.B;
                    p++;
                }
            }
            bmp.UnlockBits(data);
            return(bmp);
        }
Ejemplo n.º 3
0
 public abstract void DrawString(string text, Gdi::PointF p2, FontManager f, Color color);
Ejemplo n.º 4
0
 /// <summary>
 /// 線の描画を行います。
 /// </summary>
 /// <param name="p1">線の起点を指定します。</param>
 /// <param name="p2">線の終点を指定します。</param>
 /// <param name="color">線の色を指定します。</param>
 /// <param name="width">線の太さを指定します。</param>
 public abstract void DrawLine(Gdi::PointF p1, Gdi::PointF p2, Color color, float width);
Ejemplo n.º 5
0
 public override void DrawString(string text, Gdi::PointF p, FontManager f, Color color)
 {
     this.g.DrawString(text, f.Font, new Gdi::SolidBrush((Gdi::Color)color), p);
 }
Ejemplo n.º 6
0
 public override void DrawLine(System.Drawing.PointF p1, System.Drawing.PointF p2, Color color, float width)
 {
     this.pen.Color = (Gdi::Color)color;
     this.pen.Width = width;
     //this.g.DrawLine(this.pen,p1,p2);
     this.g.DrawLine(this.pen, Gdi::Point.Truncate(p1), Gdi::Point.Truncate(p2));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 指定した色で指定した System.Drawing.Image を塗りつぶして返します。
 /// </summary>
 /// <param name="source">塗りつぶす前の画像を指定します。</param>
 /// <param name="color">塗り潰すのに使用する色を指定します。</param>
 /// <returns>塗り潰した結果の Bitmap を返します。</returns>
 public static System.Drawing.Bitmap ClearRGB(System.Drawing.Image source, Color32Argb color)
 {
     return(ClearRGB(new System.Drawing.Bitmap(source), color));
 }