博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi把一张PNG横向分割成N张透明通道的图片
阅读量:5999 次
发布时间:2019-06-20

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

Delphi新版本虽然集成了PngImage但是分割复制什么的却非常难用.稍微封装了一下.可以把一张PNG

横向分割成N张.透明通道什么的都可以保持不变.
type
TPngArray = array of TPngImage;
procedure CopyPng(const Src: TPngImage; dest: TPngImage;
const sOffset: Integer);
var
i, j, s: Integer;
p1, p2: PByteArray;
pa1, pa2: PByteArray;
begin
for i := 0 to Src.Height - 1 do
begin
p1 := Src.Scanline[i];
p2 := dest.Scanline[i];
pa1 := Src.AlphaScanline[i];
pa2 := dest.AlphaScanline[i];
for j := 0 to dest.Width - 1 do
begin
s := j + sOffset;
p2[3 * j] := p1[3 * s];
p2[3 * j + 1] := p1[3 * s + 1];
p2[3 * j + 2] := p1[3 * s + 2];
pa2[j] := pa1[s];
end;
end;
end;
function SplitePng(const Src: TPngImage; Count : Integer) : TPngArray;
var
I, lwidth,loffset : Integer;
begin
SetLength(Result, Count);
lwidth := Src.Width div Count;
loffset := 0;
for i := 0 to Count -1 do

begin

Result[i] := TPngImage.CreateBlank(COLOR_RGBALPHA, 8, lwidth, Src.Height);
CopyPng(Src, Result[i], lOffset);
Inc(loffset, lwidth);
end;
end;

转载地址:http://zfzmx.baihongyu.com/

你可能感兴趣的文章
记校赛
查看>>
iphone微信后退不刷新的问题
查看>>
将博客搬至CSDN
查看>>
弹出层模板
查看>>
Django视图,与数据库交互并返回数据
查看>>
spring事务
查看>>
hdu 1847 Good Luck in CET-4 Everybody!
查看>>
【转】服务器结构探讨 -- 简单的世界服实现
查看>>
python enumerate函数用法
查看>>
Bzoj1032 [JSOI2007]祖码Zuma
查看>>
Python标准异常总结
查看>>
asp.net ajax学习系列功能强大的UpdatePanel控件
查看>>
前端基础开发之HTML
查看>>
字符串问题分析方法
查看>>
Magento错误处理
查看>>
信息安全系统设计基础第十一周
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>
USACO习题:Friday the Thirteenth
查看>>