C# 制作出任意不规则按钮! (原理根据背景图绘制button)
using System.Drawing.Drawing2D;
private void button3_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 { this.button3.Cursor = Cursors.Hand;
 Bitmap bmpBob =(Bitmap)this.button3.Image; 
 GraphicsPath graphicsPath = CalculateControlGraphicsPath(bmpBob);
 this.button3.Region = new Region(graphicsPath); 
 }
 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 if(bitmap.GetPixel(colNext, row) == colorTransparent)
 break;
 
 graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, 
 row, colNext - colOpaquePixel, 1));
 
 col = colNext;
 }
 }
 } 
 return graphicsPath;
 }