博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi异形窗口之PNG
阅读量:6299 次
发布时间:2019-06-22

本文共 2105 字,大约阅读时间需要 7 分钟。

 

1 //1.单元内容 2 unit UnitAlienForm; 3 interface 4 uses 5   Windows, Forms, Classes, Graphics; 6 //从文件加载PNG 7 procedure AlienForm_PNGFromFile(AForm : TForm; AFileName : String); 8 //从资源加载PNG 9 procedure AlienForm_PNGFromResource(AForm : TForm; ResName : String; ResType : PWideChar; Instance : HINST = 0);10 //从图像对象加载11 procedure AlienForm_PNGFromGraphic(AForm : TForm; AGraphic : TGraphic);12 implementation13 procedure AlienForm_PNGFromFile(AForm : TForm; AFileName : String);14 var15   wic : TWICImage;16 begin17   wic := TWICImage.Create;18   wic.LoadFromFile(AFileName);19   AlienForm_PNGFromGraphic(AForm, wic);20   wic.Free;21 end;22 procedure AlienForm_PNGFromResource(AForm : TForm; ResName : String;ResType : PWideChar; Instance : HINST);23 var24   wic : TWICImage;25   r : TResourceStream;26 begin27   if Instance = 0 then28     Instance := HInstance;29   r := TResourceStream.Create(Instance, ResName, ResType);30   wic := TWICImage.Create;31   wic.LoadFromStream(r);32   AlienForm_PNGFromGraphic(AForm, wic);33   wic.Free;34   r.Free;35 end;36 procedure AlienForm_PNGFromGraphic(AForm : TForm; AGraphic : TGraphic);37 var38   ptDst, ptSrc: TPoint;39   Size: TSize;40   BlendFunction: TBlendFunction;41   bmp : TBitmap;42 begin43   bmp := TBitmap.Create;44   bmp.Assign(AGraphic);45   ptDst := Point(AForm.Left, AForm.Top);46   ptSrc := Point(0, 0);47   Size.cx := AGraphic.Width;48   Size.cy := AGraphic.Height;49   BlendFunction.BlendOp := AC_SRC_OVER;50   BlendFunction.BlendFlags := 0;51   BlendFunction.SourceConstantAlpha := $FF; // 透明度52   BlendFunction.AlphaFormat := AC_SRC_ALPHA;53   SetWindowLong(AForm.Handle, GWL_EXSTYLE, GetWindowLong(AForm.Handle,54       GWL_EXSTYLE) or WS_EX_LAYERED);55   UpdateLayeredWindow(AForm.Handle,56      AForm.Canvas.Handle,57      @ptDst,58      @Size,59      bmp.Canvas.Handle,60      @ptSrc,61      0,62      @BlendFunction,63      ULW_ALPHA);64   bmp.Free();65 end;66 end.67 68 //2.调用方法69 procedure TForm2.FormCreate(Sender: TObject);70 begin71   AlienForm_PNGFromFile(Form2, 'E:\未标题.png');72 end;

 

转载于:https://www.cnblogs.com/FKdelphi/p/5843038.html

你可能感兴趣的文章
uva 10256 The Great Divide (Convex Hull, Simple)
查看>>
hdu 1811 Rank of Tetris (并查集+拓扑排序)
查看>>
poj 1088 滑雪 详解
查看>>
关于MyEcplise中常见的问题和解决方案
查看>>
Ocelot(一)- .Net Core开源网关
查看>>
gj11 多线程、多进程和线程池编程
查看>>
简单易用且功能丰富的纯Swift下载框架
查看>>
Cocos2d-x开发---关于安卓打包所遇到的错误记录
查看>>
VMware下Ubuntu联网操作
查看>>
vlmcsd-1111-2017-06-17
查看>>
Linq-ToList与ToArray
查看>>
p3295 [SCOI2016]萌萌哒
查看>>
csu 1976: 搬运工小明
查看>>
java Class类与反射
查看>>
VC++ (2) win32 显示图片
查看>>
solr的安装配置与helloworld
查看>>
htm、html、shtml网页区别
查看>>
Docker学习笔记
查看>>
Python生产环境部署(fastcgi,uwsgi)
查看>>
Tomcat 7最大并发连接数的正确修改方法(转)
查看>>