博客园  :: 首页  :: 联系 :: 管理

根据位图绘制控件外观

Posted on 2006-11-20 08:57  sunrack  阅读(199)  评论(0编辑  收藏  举报
private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)
        
{
   
            GraphicsPath graphicsPath 
= new GraphicsPath();
  
 
            Color colorTransparent 
= bitmap.GetPixel(00);
  
            
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;
  
        }




private void simpleButton1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        
{
            
this.simpleButton1.Cursor = Cursors.Hand;
            Bitmap bmpBob 
=(Bitmap)this.simpleButton1.Image;      
            GraphicsPath graphicsPath 
= CalculateControlGraphicsPath(bmpBob);
            
this.simpleButton1.Region = new Region(graphicsPath);  
        }