如何解决双层Image闪烁问题?

                            
   
      一个面积小的Image在一个面积大的Image之上  
   
      通过拖动一个TrackBar在其OnChange事件中  
   
      对面积小的Image进行透明度处理时闪烁挺严重的  
   
      部分代码如下:  
   
  procedure   TFormMain.TBAlphaChange(Sender:   TObject);  
  var  
      BF:   BLENDFUNCTION;  
      bmp:   TBitmap;  
  begin  
      if   (Image2.Picture.Bitmap.Empty   =   false)   and   (CBAlpha.Checked)   then  
      begin  
          BF.BlendOp   :=   AC_SRC_OVER;  
          BF.BlendFlags   :=   0;  
          BF.SourceConstantAlpha   :=   Round(255*TBAlpha.Position   /   100);  
          BF.AlphaFormat   :=   0;  
          bmp   :=   TBitmap.Create;  
          bmp.Assign(Image2.Picture.Bitmap);  
          Image2.Picture.Assign(nil);  
      Windows.AlphaBlend(Image2.Canvas.Handle,   0,0,Image2.Width,Image2.Height,Bmp.Canvas.Handle,   0,0,Image2.Width,   Image2.Height,BF);  
          bmp.Free;    
      end;  
  end;  
 

查看回复