如何使得图片(TImage)半透明显示? 想让图片有朦胧的感觉

时间:2022-02-28 19:27:02
好像对form可以使用 alphaBlend属性,使用api函数也可以使得form透明

但对图片好像没找到什么好的方法

12 个解决方案

#1


图片也可以用 alphaBlend函数,其中参数“X”是控制透明度的程度
图片必须是.bmp格式

#2


不知道用bitblt是否可以实现?

就是使用copymode来控制

#3


alphaBlend函数? 怎么用?

是api函数吗? 我只知道form有这个属性

#4


是api函数,你查一下是api函数参考

#5


这个函数98下好象使不了吧!

#6


我使用了一下,没有出错,但是也没有任何效果出来

#7


你给的分太少了,这不是一个小问题,我也关注

#8


alphBlend函数我使用好了,
但是,好像这个函数不是让图片透明的哦

它只是将源图alpha后拷贝到目标图中,也就是说目标图中的图像比源图中的图象要淡一些,但并没有什么透明的效果啊

#9


最懒惰地办法是隔一个象素画一个自然就朦胧了!不信试试!这是我想出来地最简单办法!其他地就需要一些知识!

#10


我也没办法,我的可用分一直上不去

#11


你看一下这个程序,其中image2,image3 装入两个不同的.bmp图片
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
   udtblender:TBlendFunction;
begin
   with  udtblender do
   begin
     Blendop:=AC_SRC_OVER;
     Blendflag:=0;
     SourceConstantAlpha:=x;
     AlphaFormat=0;
   end;
   image1.Canvas.Draw(0,0,image2.Picture.Graphic);
   AlphaBlend(image1.Canvas.Handle,0,0,image1.Width,image1.Height,
              image3.Canvas.Handle,0,0,image3.Width,image3.Height,
              udtblender);
end;

end.

#12


谢谢各位,结帐

#1


图片也可以用 alphaBlend函数,其中参数“X”是控制透明度的程度
图片必须是.bmp格式

#2


不知道用bitblt是否可以实现?

就是使用copymode来控制

#3


alphaBlend函数? 怎么用?

是api函数吗? 我只知道form有这个属性

#4


是api函数,你查一下是api函数参考

#5


这个函数98下好象使不了吧!

#6


我使用了一下,没有出错,但是也没有任何效果出来

#7


你给的分太少了,这不是一个小问题,我也关注

#8


alphBlend函数我使用好了,
但是,好像这个函数不是让图片透明的哦

它只是将源图alpha后拷贝到目标图中,也就是说目标图中的图像比源图中的图象要淡一些,但并没有什么透明的效果啊

#9


最懒惰地办法是隔一个象素画一个自然就朦胧了!不信试试!这是我想出来地最简单办法!其他地就需要一些知识!

#10


我也没办法,我的可用分一直上不去

#11


你看一下这个程序,其中image2,image3 装入两个不同的.bmp图片
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
   udtblender:TBlendFunction;
begin
   with  udtblender do
   begin
     Blendop:=AC_SRC_OVER;
     Blendflag:=0;
     SourceConstantAlpha:=x;
     AlphaFormat=0;
   end;
   image1.Canvas.Draw(0,0,image2.Picture.Graphic);
   AlphaBlend(image1.Canvas.Handle,0,0,image1.Width,image1.Height,
              image3.Canvas.Handle,0,0,image3.Width,image3.Height,
              udtblender);
end;

end.

#12


谢谢各位,结帐