[DUG] AlphaBlend Panel?

Kyley Harris Kyley at harrissoftware.com
Fri Mar 20 12:06:37 NZST 2009


procedure AlphaBlendPanel(P: TCustomPanel;var Bmp:
TBitmap;AColor:TColor;ABlend:integer;AddFrame:boolean);

var
  b:TBitmap;


var
  bf:TBlendFunction;
  c:TCanvas;
begin

//  AColor := clInfoBk;
  fillchar(bf,sizeof(bf),0);
  b := TBitmap.Create;
  b.Height := p.Height;
  b.Width := P.Width;
  b.Canvas.Brush.Style := bsSolid;
  b.Canvas.Brush.Color := AColor;
  b.Canvas.FillRect(rect(0,0,b.Width,b.height));

  bf.BlendOp := AC_SRC_OVER;
  bf.SourceConstantAlpha := ABlend;

  BMP.Height := p.Height;
  BMP.Width := p.Width;
  p.PaintTo(bmp.Canvas,0,0);

  windows.AlphaBlend(bmp.Canvas.Handle,0,0,P.Width,P.Height,b.Canvas.Handle,0,0,P.Width,P.Height,bf);

  if AddFrame then
  begin

    b.Canvas.Brush.Color := clNavy;
    b.Canvas.FillRect(rect(0,0,b.Width,b.height));

    bf.BlendOp := AC_SRC_OVER;
    bf.SourceConstantAlpha := 150;


 windows.AlphaBlend(bmp.Canvas.Handle,0,0,P.Width,4,b.Canvas.Handle,0,0,P.Width,4,bf);

 windows.AlphaBlend(bmp.Canvas.Handle,0,p.height-4,P.Width,4,b.Canvas.Handle,0,p.height-4,P.Width,4,bf);

 windows.AlphaBlend(bmp.Canvas.Handle,0,0,4,p.height,b.Canvas.Handle,0,0,3,p.height,bf);

 windows.AlphaBlend(bmp.Canvas.Handle,p.width-4,0,4,p.height,b.Canvas.Handle,p.width-4,0,4,p.height,bf);

  end;
{
//  BMP.Canvas.CopyMode := cmSrcAnd;
  BMP.Canvas.CopyMode := cmSrcInvert;
  BMP.Canvas.CopyRect(r,b.Canvas,r);
  BMP.Canvas.Brush.Color := clyellow;
  Dec(r.Right);
  Dec(r.Bottom);

  BMP.Canvas.FrameRect(r);
  Dec(r.Right);Dec(r.Bottom);Inc(r.Left);Inc(r.Top);
  BMP.Canvas.FrameRect(r);
 }
  b.free;

end;


On Fri, Mar 20, 2009 at 1:04 PM, Jeremy North <jeremy.north at gmail.com>wrote:

> Delphi 2009 has support for alpha blending. Otherwise Graphics32 might
> be of some use.
>
> On Fri, Mar 20, 2009 at 10:15 AM, Jeremy Coulter <jscoulter at gmail.com>
> wrote:
> > Hi guys.
> > I need to have an overlay that does an alphablend.
> > I thought that I might be able to do this with a panel but thats no go.
> > Anyone know of a way yo acheive this?
> >
> >
> > Jeremy
> >
> > _______________________________________________
> > NZ Borland Developers Group - Delphi mailing list
> > Post: delphi at delphi.org.nz
> > Admin: http://delphi.org.nz/mailman/listinfo/delphi
> > Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
> > unsubscribe
> >
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
> unsubscribe
>



-- 
Kyley Harris
Harris Software
+64-21-671-821
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20090320/6ec596a2/attachment.html 


More information about the Delphi mailing list