hola a todos , bueno . Soy nuevo en esto de programar hasta ahora aprendi a programar lo basico en delphiy ahora estoy entrando al mundo de C++ builder ,Yo quisiera q me ayuden a pasar este codigo de Delphi a C++ builder
Es un codigo de tranparencias entre 2 imagenes , donde yo tengo 2 imagenes en formulario q contienen las imagenes q voy ocupar(Image1,Image2),y en el canvas de Image3 pinto la imagen combinada entre Image1 y Image2 , una Semitransparencia entre 2 imagenes,
En el edit1->Text se inserta el porcentaje de transparencia.
mi problema es q nose como usar el procedimiento Alphablend q creo q pertenece a la API de Windows
Código Delphi
[-]
unit UFAlphaBlend;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Button1: TButton;
Image2: TImage;
Image1: TImage;
Image3: TImage;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
xBlend : BLENDFUNCTION;
ini,iAncho,iAlto,alpha:Integer;
aBitmap1,aBitmap2,aBitmap3:TBitmap;
Begin
iAncho := Image1.Width;
iAlto := Image1.Height;
aBitmap1 := TBitmap.Create;
aBitmap2 := TBitmap.Create;
aBitmap3 := Tbitmap.Create;
aBitmap1.Assign(Image1.Picture.Graphic);
aBitmap2.Assign(Image2.Picture.Graphic);
aBitmap3.Width := iAncho;
aBitmap3.Height :=iAlto;
ini := windows.GetTickCount;
aBitmap3.Assign(aBitmap1);
xBlend.BlendOp := windows.AC_SRC_OVER;
xBlend.BlendFlags := 0;
Alpha:=StrToInt(Edit1.Text);
xBlend.SourceConstantAlpha := Alpha;
xBlend.AlphaFormat := 0;
Windows.AlphaBlend(aBitmap3.Canvas.Handle,0,0,iAncho,iAlto,aBitmap2.Canvas.Handle,0,0,iAncho,iAlto,x Blend);
Image3.Canvas.Draw(0,0,aBitmap3);
Caption := inttostr(getTickCount - ini)+' milisegundos por frame ' + inttostr(Alpha);
end;
end.