Blend2d ist eine Hochleistungs-2D-Vektorgrafikmotor. Es wurde von Grund auf mit dem Ziel geschrieben, die bestmögliche softwarebasierte Beschleunigung des 2D-Renderings zu erreichen. Blend2D bietet einen hochwertigen Analyse-Rasterizer, einen neuen Streichelmotor, der Kurvenversattung anstelle von Abflachung verwendet, und einen 2D-Pipeline-Generator, der zur Laufzeit optimale 2D-Pipelines generiert wird, um optimale 2D-Pipelines zu erzeugen.
DelphiBlend2d eröffnet Op Blend2d für Delphi -Entwickler. Es bietet Header -Übersetzungen für die Blend2D C API sowie ein objektorientiertes Framework, um die Verwendung zu erleichtern.
Beachten Sie, dass Blend2D (und damit delphiblend2d) noch in Beta ist. Die API und das Rahmen können sich ändern.
DelphiBlend2d unterstützt derzeit Windows (32 und 64-Bit). Die Unterstützung von macOS, iOS und Android ist für zukünftige Versionen geplant.
Die derzeit verwendeten Blend2D -Bibliotheken sind noch nicht vollständig optimiert. Obwohl die Leistung bereits ausgezeichnet ist, erwarten Sie noch bessere Leistung, sobald Blend2d die Beta ausgeht.
Das DelphiBlend2D OOP -Framework folgt der Blend2D C ++ - API so genau wie möglich. Es verwendet Schnittstellen für das automatische Ressourcenmanagement. Das folgende Ausschnitt stammt aus dem Beispielprojekt 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 ;Es erzeugt die folgende Ausgabe:

Die Dokumentation kann derzeit als Code -Kommentare in der Einheit Blend2D.pas gefunden werden. Separate Dokumentation wird bereitgestellt, sobald Blend2d aus der Beta ausgeht.
Da das Framework nach Möglichkeit mit der ursprünglichen C ++ - API übereinstimmt, können Sie auch die ursprüngliche Blend2D -Dokumentation verwenden.
DelphiBlend2D verfügt über eine Vielzahl von Beispielanwendungen, die den ursprünglichen Beispielanwendungen von Blend2D entsprechen:
SamplesGettingStarted enthält Konsolenanwendungen, die DelPhiBlend2D verwenden, um Bilder zu erstellen und in .BMP -Dateien zu speichern. Diese Samples verwenden nicht das VCL- oder Fironemonkey -Framework.SamplesFireMonkey -Verzeichnis enthält Muster, die das Fironemonkey -Framework verwenden, um eine einfache Benutzeroberfläche bereitzustellen. Diese stimmen mit den ursprünglichen Beispielen für Blend2D -Beispiele überein, die das QT -Framework verwenden. Mit den meisten dieser Anwendungen können Sie zwischen integriertem Fironemonkey-Rendering und Blend2D-Rendering wechseln. Derzeit funktionieren diese Muster nur unter Windows und MacOS. Zu den zukünftigen Veröffentlichungen geplanten Funktionen gehören:
TPaintBox -ähnliche Steuerung für VCL und Fironemekey an, die stattdessen Blend42 mithilfe von Blend42 rendern.Sowohl Blend2D als auch DelphiBlend2d werden unter der ZLIB -Lizenz veröffentlicht. Einzelheiten siehe Lizenz.txt.