zoukankan      html  css  js  c++  java
  • Delphi把一张PNG横向分割成N张透明通道的图片

    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;

  • 相关阅读:
    Combox小问题
    数据库登录名,用户,角色以及权限分配
    UDP初识
    AJax 无刷新构建DataTable
    批量修改数据库构架SQL
    Jquery Ajax
    Linq中使用Group By
    对象的消息模型
    P2P网络技术概览与实现原理
    ajax(1)
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3295915.html
Copyright © 2011-2022 走看看