Blend2D é um mecanismo gráfico de vetor 2D de alto desempenho. Foi escrito do zero com o objetivo de alcançar a melhor aceleração possível baseada em software da renderização 2D. O Blend2D fornece um rasterizador analítico de alta qualidade, um novo mecanismo de travamento que usa compensação da curva em vez de achatar e um gerador de pipeline 2D que usa compilação JIT para gerar pipelines 2D ideais em tempo de execução.
Delphiblend2d abre o OP Blend2D para desenvolvedores da Delphi. Ele fornece traduções de cabeçalho para a API Blend2d C, bem como uma estrutura orientada a objetos para facilitar o uso.
Observe que o Blend2D (e, portanto, Delphiblend2D) ainda está na versão beta. A API e a estrutura estão sujeitas a alterações.
O Delphiblend2D atualmente suporta Windows (32 e 64 bits). O suporte ao MacOS, iOS e Android estão planejados para versões futuras.
As bibliotecas Blend2D atualmente usadas ainda não estão totalmente otimizadas. Embora o desempenho já seja excelente, espere um desempenho ainda melhor quando o Blend2D sai da versão beta.
A estrutura Delphiblend2D OOP segue a API Blend2D C ++ o mais próximo possível. Ele usa interfaces para gerenciamento automático de recursos. O trecho abaixo é retirado do projeto de amostra blGettingStarted05 .
procedure Run ;
var
Image: IBLImage;
Context: IBLContext;
Radial, Linear: IBLGradient;
Codec: IBLImageCodec;
begin
Image := TBLImage.Create( 480 , 480 );
Context := TBLContext.Create(Image);
Context.CompOp := TBLCompOp.SrcCopy;
Context.FillAll;
{ First shape filled by a radial gradient. }
Radial := TBLGradient.Create(BLRadialGradientValues( 180 , 180 , 180 , 180 , 180 ));
Radial.AddStop( 0.0 , BLRgba32($FFFFFFFF));
Radial.AddStop( 1.0 , BLRgba32($FFFF6F3F));
Context.CompOp := TBLCompOp.SrcOver;
Context.SetFillStyle(Radial);
Context.FillCircle( 180 , 180 , 160 );
{ Second shape filled by a linear gradient. }
Linear := TBLGradient.Create(BLLinearGradientValues( 195 , 195 , 470 , 470 ));
Linear.AddStop( 0.0 , BLRgba32($FFFFFFFF));
Linear.AddStop( 1.0 , BLRgba32($FF3F9FFF));
Context.CompOp := TBLCompOp.Difference;
Context.SetFillStyle(Linear);
Context.FillRoundRect( 195 , 195 , 270 , 270 , 25 );
Context.Finish;
Codec := TBLImageCodec.Create;
if (Codec.FindByName( ' BMP ' )) then
Image.WriteToFile( ' blGettingStarted05.bmp ' , Codec);
end ;Ele cria a seguinte saída:

Atualmente, a documentação pode ser encontrada como comentários de código na unidade Blend2D.pas . A documentação separada será fornecida assim que o Blend2D sair da versão beta.
Como a estrutura corresponde à API C ++ original sempre que possível, você também pode usar a documentação original do Blend2D.
O Delphiblend2D vem com uma variedade de aplicativos de amostra que correspondem às aplicações de amostra original do Blend2D:
SamplesGettingStarted contém aplicativos de console que usam o Delphiblend2D para criar imagens e salvá -las em arquivos .BMP . Essas amostras não usam a estrutura VCL ou Firemonkey.SamplesFireMonkey contém amostras que usam a estrutura do Firemonkey para fornecer uma interface do usuário simples. Eles correspondem aos exemplos originais do Blend2D que usam a estrutura QT. A maioria desses aplicativos permite alternar entre a renderização do Firemonkey embutida e a renderização do Blend2D. Atualmente, essas amostras funcionam apenas no Windows e MacOS. Os recursos planejados para lançamentos futuros incluem:
TPaintBox para VCL e Firemonkey que renderiza o Blend42.Blend2D e Delphiblend2D são liberados sob a licença ZLIB. Consulte License.txt para obter detalhes.