如何控制PNG图像的透明度?

解决方案 »

  1.   

    控制图像的透明度用图像处理工具,不用delphi
    你控制显示透明度用图像控件。
      

  2.   

    type 
      TARGBRect = packed record 
        Blue, Green, Red, Alpha: Byte; 
      end; 
    var 
      I, x, y: Integer; 
      bmp: TGpBitmap; 
      bg: TGpGraphics; 
      Data: TBitmapData; 
      P: PInteger; 
    begin 
      DoubleBuffered := True; 
      bmp := TGpBitmap.Create('0.bmp'); 
      try 
        Data := bmp.LockBits(GpRect(0, 0, W, H), [imRead, imWrite], pf32bppARGB); 
        P := Data.Scan0; 
        for y := 1 to Data.Height do 
          for x := 1 to Data.Width do 
          begin 
            // 计算不透明度 
            with TARGBRect(P^) do 
            Alpha := Max(Red, Max(Green, Blue)); 
            //Alpha := (Red + Green + Blue) div 3; 
            //Alpha := (306 * Red + 601 * Green + 117 * Blue) div 1024; 
            Inc(P); 
          end; 
        bmp.UnlockBits(Data); 
        bg := TGpGraphics.Create(form1.Canvas.Handle); 
        bg.DrawImage(bmp, 0, 0, bmp.wideh, bmp.Height); 
      end; 
      finally 
        bg.Free; 
        bmp.Free; 
      end; 
    end;