Delphi绘制Alpha图像的函数
最近在整理代码的时候发现了这个函数,但是原作者是谁我已经不知道了,修正了里面的一个bug,然后把alpha修改为0-255个级别!(原来为10)
2
3 type
4 TRGBArray = array[0..32767] of TRGBTriple;
5 PRGBArray = ^TRGBArray;
6
7 var
8 X, Y : Integer;
9 rowFore,
10 rowBack : PRGBArray;
11
12 begin
13 // check bitmaps
14 if not Assigned(bmpBack) or
15 not Assigned(bmpFore) then
16 Exit;
17
18 // check color depth
19 if (bmpFore.PixelFormat <> pf24bit) or
20 (bmpBack.PixelFormat <> pf24bit) then
21 Exit;
22
23 // check dimensions
24 // if (bmpFore.Height + OffY > bmpBack.Height) or
25 // (bmpFore.Width + OffX > bmpBack.Width) then
26 // Exit;
27
28 // check alpha value
29 if (Alpha > 255) or
30 (Alpha < 0) then
31 Alpha := 255;
32
33 for y := 0 to bmpFore.Height - 1 do
34 begin
35 // scan bitmap rows
36 if (y > bmpBack.Width) then
37 Continue;
38 rowBack := bmpBack.ScanLine[y + OffY];
39 rowFore := bmpFore.ScanLine[y];
40 for x := 0 to bmpFore.Width - 1 do
41 begin
42 if (x+offx>bmpBack.Width) then
43 Continue;
44 // if not transparent color
45 if not ((rowFore[x].rgbtRed = GetRValue(TransColor)) and
46 (rowFore[x].rgbtGreen = GetGValue(TransColor)) and
47 (rowFore[x].rgbtBlue = GetBValue(TransColor))) then
48 // calculate new pixel value
49 begin
50 rowBack[x + OffX].rgbtRed := ((rowBack[x + OffX].rgbtRed * (255 - Alpha)) + (rowFore[x].rgbtRed * abs(Alpha-255)))div 255;
51 rowBack[x + OffX].rgbtGreen := ((rowBack[x + OffX].rgbtGreen) * (255 - Alpha) + (rowFore[x].rgbtGreen * Abs(Alpha-255)))div 255;
52 rowBack[x + OffX].rgbtBlue := ((rowBack[x + OffX].rgbtBlue) * (255 - Alpha) + (rowFore[x].rgbtBlue * Abs(Alpha-255)))div 255;
53 end;
54 end;
55 end;
56 end;
下面的是使用的例子
2 begin
3 // set color depth to 16.7mio colors (24 bit)
4 // because the loaded bitmaps are 8 bit
5 img1.Picture.Bitmap.PixelFormat := pf24bit;
6 img2.Picture.Bitmap.PixelFormat := pf24bit;
7
8 DrawAlpha(img1.Picture.Bitmap, img2.Picture.Bitmap, clFuchsia, 10, 10, 5);
9
10 // update image1 (result)
11 img1.Invalidate;
12 end;
转载于:https://www.cnblogs.com/sun_catboy/archive/2008/09/16/1291579.html
Delphi绘制Alpha图像的函数相关推荐
- python绘制条形图用什么函数_Python绘制正余弦函数图像完整代码
通过python绘制正弦和余弦函数,从默认的设置开始,一步一步地调整改进,让它变得好看,变成我们初高中学习过的图象那样.通过这个过程来学习如何进行对图表的一些元素的进行调整. 01. 简单绘图 mat ...
- R语言使用persp函数绘制三维图像实战(3D):自定义3D图、图像旋转、添加轴标签
R语言使用persp函数绘制三维图像实战(3D):自定义3D图.图像旋转.添加轴标签 目录
- 用计算机绘制函数图像ppt,ppt中怎么绘制三角函数图像?
ppt中怎么绘制三角函数图像? 2018-03-16 20:22 责任编辑:砕月 导读 / 教学中我们最常用的莫过于ppt演示文稿了,除了基本的演示功能外,它也可以制作函数图像,如果利用ppt来制作函 ...
- python画正切函数_python的pygal模块绘制反正切函数图像方法
python的pygal模块绘制反正切函数图像方法 python是一个很有趣的语言,可以在命令行窗口运行.python中有很多功能强大的模块,这篇经验告诉你,如何使用python的pygal模块绘制反 ...
- python绘制一个简单的函数图像使用到了matplotlib库和numpy库
文章目录 效果展示: 视频链接 实现的思想 使用到的函数包 图片一对应的代码展示 图片二 对应的代码展示 注意事项 效果展示: 视频链接 python绘制一个简单的函数图像(B站视频) 实现的思想 其 ...
- Python-Matplotlib绘制简单图像
文章目录 1.plot 绘制直线图 2. subplot 子图 绘制直方图 绘制散点图 解决中文无法显示&&负号无法显示的问题 绘制3D图像 热力图 1.plot 绘制直线图 impo ...
- 使用matplotlib绘制3D图像时插入图片
最近学了matplotlib,想要在绘制3D图像的时候插入图片,但在网上找来找去没找到比较好的,唯一找到的一个速度有点慢.于是就自己动手吧. 先放下在stackoverflow看到的答案: # 注释为 ...
- 单目标跟踪通过CAM绘制heatmap图像(以SiamCAR为例)
论文链接: SiamCAR: Siamese Fully Convolutional Classification and Regression for Visual Tracking Group-C ...
- Nilearn:绘制大脑图像
文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注. Nilearn简介 Nilearn使许多先进的机器学习.模式识别和多元统计技术在神经成像数据上的应用变得很容易,如MVPA(Mutli-V ...
最新文章
- 支付宝app支付总结
- C语言访问内部ROM,C语言随笔2: rom ram 及其运行的过程
- guava中的Strings
- Eclipse-配置workspace路径
- ASP.NET获得客户端浏览器语言设置(Get the Language setting of browser by ASP.NET)
- Python调用大漠插件
- [ACM] hdu 1285 确定比赛名次 (拓扑排序)
- 使用ASP.NET 2.0进行记录错误
- CMOS图像传感器——高动态范围
- JDK1.8 win10系统 环境变量配置
- html5离线缓存使用
- Windows下telnet工具使用
- 搜索引擎关键字热度估算查询
- 查看CPU最大支持内存容量
- MySQL----多表查询
- 4.7 51单片机-DS1302 实时时钟芯片
- GraphX 在图数据库 Nebula Graph 的图计算实践
- 2022.04.04树莓派最新镜像问题,树莓派如何设置初始化的账户和密码
- [墨者学院] 日志文件分析溯源(脱裤的IP地址)
- python自动填表格_Windows下使用python3 + selenium实现网页自动填表功能