根据非背景图绘制控件(去除背景图后的控件)

来源:互联网 发布:uefi linux 编辑:程序博客网 时间:2024/05/24 05:02
定义:
  #region 根据非背景图绘制控件        /// <summary>        /// 绘制控件        /// </summary>        /// <param name="bitmap"></param>        /// <returns></returns>        private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)        {            GraphicsPath graphicsPath = new GraphicsPath();            Color colorTransparent = bitmap.GetPixel(0, 0);            int colOpaquePixel = 0;            for (int row = 0; row < bitmap.Height; row++)            {                colOpaquePixel = 0;                for (int col = 0; col < bitmap.Width; col++)                {                    if (bitmap.GetPixel(col, row) != colorTransparent)                    {                    colOpaquePixel = col;                    int colNext = col;                    for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)                        if (bitmap.GetPixel(colNext, row) == colorTransparent)                            break;                    graphicsPath.AddRectangle(new Rectangle(colOpaquePixel,                    row, colNext - colOpaquePixel, 1));                    col = colNext;                    }                }            }            return graphicsPath;        }        #endregion
使用 
  private void pictureBox1_Paint(object sender, PaintEventArgs e)        {            this.pictureBox1.Cursor = Cursors.Hand;            Bitmap bmpBob = (Bitmap)this.pictureBox1.Image;            GraphicsPath graphicsPath = CalculateControlGraphicsPath(bmpBob);            this.pictureBox1.Region = new Region(graphicsPath);        }

原创粉丝点击