Delphi 如何制作带阴影窗体

来源:互联网 发布:猎头 候选人推荐算法 编辑:程序博客网 时间:2024/06/05 22:44
转自
//从文件加载PNGprocedure YXForm_FromFile(AForm : TForm; AFileName : String);//从资源加载PNGprocedure YXForm_FromResource(AForm : TForm; ResName : String; ResType : PWideChar; Instance : HINST = 0);//从图像对象加载procedure YXForm_FromGraphic(AForm : TForm; AGraphic : TGraphic);implementationprocedure YXForm_FromFile(AForm : TForm; AFileName : String);varwic : TWICImage;beginwic := TWICImage.Create;wic.LoadFromFile(AFileName);YXForm_FromGraphic(AForm, wic);wic.Free;end;procedure YXForm_FromResource(AForm : TForm; ResName : String;ResType : PWideChar; Instance : HINST);varwic : TWICImage;r : TResourceStream;beginif Instance = 0 thenInstance := HInstance;r := TResourceStream.Create(Instance, ResName, ResType);wic := TWICImage.Create;wic.LoadFromStream(r);YXForm_FromGraphic(AForm, wic);wic.Free;r.Free;end;procedure YXForm_FromGraphic(AForm : TForm; AGraphic : TGraphic);varptDst, ptSrc: TPoint;Size: TSize;BlendFunction: TBlendFunction;bmp : TBitmap;beginbmp := TBitmap.Create;bmp.Assign(AGraphic);ptDst := Point(AForm.Left, AForm.Top);ptSrc := Point(0, 0);Size.cx := AGraphic.Width;Size.cy := AGraphic.Height;BlendFunction.BlendOp := AC_SRC_OVER;BlendFunction.BlendFlags := 0;BlendFunction.SourceConstantAlpha := $FF; // 透明度BlendFunction.AlphaFormat := AC_SRC_ALPHA;SetWindowLong(AForm.Handle, GWL_EXSTYLE, GetWindowLong(AForm.Handle,GWL_EXSTYLE) or WS_EX_LAYERED);UpdateLayeredWindow(AForm.Handle,AForm.Canvas.Handle,@ptDst,@Size,bmp.Canvas.Handle,@ptSrc,0,@BlendFunction,ULW_ALPHA);bmp.Free();end;end.//想要用的时候很简单,举个例子:ff := TForm2.Create(Self);YXForm_FromFile(ff, ‘c:/a.png’);ff.Show;

0 0
原创粉丝点击