C#创建不规则窗体的4种方式详解

2019-12-30 11:01:57丽君
  • /// <returns>Calculated graphics path</returns>   private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)  
  • {   // Create GraphicsPath for our bitmap calculation  
  • //创建 GraphicsPath   GraphicsPath graphicsPath = new GraphicsPath();  
  • // Use the top left pixel as our transparent color   //使用左上角的一点的颜色作为我们透明色  
  • Color colorTransparent = bitmap.GetPixel(0, 0);   // This is to store the column value where an opaque pixel is first found.  
  • // This value will determine where we start scanning for trailing opaque pixels.   //第一个找到点的X  
  • int colOpaquePixel = 0;   // Go through all rows (Y axis)  
  • // 偏历所有行(Y方向)   for (int row = 0; row < bitmap.Height; row++)  
  • {   // Reset value  
  • //重设   colOpaquePixel = 0;  
  • // Go through all columns (X axis)   //偏历所有列(X方向)  
  • for (int col = 0; col < bitmap.Width; col++)   {  
  • // If this is an opaque pixel, mark it and search for anymore trailing behind   //如果是不需要透明处理的点则标记,然后继续偏历  
  • if (bitmap.GetPixel(col, row) != colorTransparent)   {  
  • // Opaque pixel found, mark current position   //记录当前  
  • colOpaquePixel = col;   // Create another variable to set the current pixel position  
  • //建立新变量来记录当前点   int colNext = col;  
  • // Starting from current found opaque pixel, search for anymore opaque pixels   // trailing behind, until a transparent pixel is found or minimum width is reached