根据非背景图绘制控件(去除背景图后的控件)
来源:互联网 发布: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); }