Delphi异形窗口之PNG
2016-09-05 17:32
323 查看
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/729445/o_Delphi%e5%bc%82%e5%bd%a2%e7%aa%97%e5%8f%a3%e4%b9%8bPNG.jpg)
//1.单元内容 unit UnitAlienForm; interface uses Windows, Forms, Classes, Graphics; //从文件加载PNG procedure AlienForm_PNGFromFile(AForm : TForm; AFileName : String); //从资源加载PNG procedure AlienForm_PNGFromResource(AForm : TForm; ResName : String; ResType : PWideChar; Instance : HINST = 0); //从图像对象加载 procedure AlienForm_PNGFromGraphic(AForm : TForm; AGraphic : TGraphic); implementation procedure AlienForm_PNGFromFile(AForm : TForm; AFileName : String); var wic : TWICImage; begin wic := TWICImage.Create; wic.LoadFromFile(AFileName); AlienForm_PNGFromGraphic(AForm, wic); wic.Free; end; procedure AlienForm_PNGFromResource(AForm : TForm; ResName : String;ResType : PWideChar; Instance : HINST); var wic : TWICImage; r : TResourceStream; begin if Instance = 0 then Instance := HInstance; r := TResourceStream.Create(Instance, ResName, ResType); wic := TWICImage.Create; wic.LoadFromStream(r); AlienForm_PNGFromGraphic(AForm, wic); wic.Free; r.Free; end; procedure AlienForm_PNGFromGraphic(AForm : TForm; AGraphic : TGraphic); var ptDst, ptSrc: TPoint; Size: TSize; BlendFunction: TBlendFunction; bmp : TBitmap; begin bmp := 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. //2.调用方法 procedure TForm2.FormCreate(Sender: TObject); begin AlienForm_PNGFromFile(Form2, 'E:\未标题.png'); end;
相关文章推荐
- Delphi异形窗口之PNG
- 一个最简单的Delphi2010的PNG异形窗口方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- delphi 创建半透明的异形窗口
- 使用分层窗口及透明png图片实现一个异形窗口
- 使用分层窗口及透明png图片实现一个异形窗口
- 用PNG透明图片和GDI+做不规则透明窗体"异形窗口"
- 用PNG透明图片和GDI+做不规则透明窗体"异形窗口"
- 用PNG透明图片和GDI+做不规则透明窗体"异形窗口"
- 用PNG透明图片和GDI+做不规则透明窗体"异形窗口"
- Delphi实现非模态主窗口最小化子窗口不最小化
- 使用Unity3d做异形窗口
- Delphi获得一个进程的主窗体(GetWindow(AHandle, GW_OWNER)等于0的窗体才是主窗体,并且要IsWindowVisible排除Application窗口)
- Delphi自定义窗口过程WinProc
- // Delphi中给出窗口标题的部分字符串,求窗口的句柄,窗口模糊查询
- 在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
- delphi固定窗口大小