/// <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); }
/// <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); }
public abstract void DrawString(string text, Gdi::PointF p2, FontManager f, Color color);
/// <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);
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); }
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)); }
/// <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)); }