Blend2D-высокопроизводительный 2D-векторный графический двигатель. Он был написан с нуля с целью достижения наилучшего возможного ускорения программного обеспечения 2D-рендеринга. Blend2D предоставляет высококачественный аналитический раститель, новый двигатель для поглаживания, который использует смещение кривой вместо сглаживания, и 2D-генератор трубопроводов, который использует компиляцию JIT для создания оптимальных 2D-трубопроводов во время выполнения.
Delphiblend2d открывает OP Blend2d для разработчиков Delphi. Он обеспечивает переводы заголовка для API Blend2d C, а также объектно -ориентированную структуру, чтобы упростить использование.
Обратите внимание, что Blend2d (и, следовательно, Delphiblend2d) все еще находится в бета -версии. API и структура могут быть изменены.
Delphiblend2d в настоящее время поддерживает Windows (32 и 64-бит). Поддержка MacOS, iOS и Android планируется для будущих версий.
Библиотеки Blend2D, которые в настоящее время используются, еще не полностью оптимизированы. Хотя производительность уже превосходна, ожидайте, что еще лучшая производительность, как только Blend2d уходит из бета.
Структура OOP Delphiblend2D следует как можно ближе к API Blend2d C ++. Он использует интерфейсы для автоматического управления ресурсами. Приведенный ниже фрагмент взят из образца 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 ;Это создает следующий выход:

В настоящее время документация может быть найдена в виде комментариев кода в блоке Blend2D.pas . Отдельная документация будет предоставлена после того, как Blend2d выходит из бета.
Поскольку фреймворк соответствует исходному API C ++, где это возможно, вы также можете использовать оригинальную документацию Blend2D.
Delphiblend2d поставляется с различными приложениями примеров, которые соответствуют исходным приложениям применения Blend2d:
SamplesGettingStarted содержит консольные приложения, которые используют Delphiblend2d для создания изображений и сохранения их в файлах .BMP . Эти образцы не используют структуру VCL или FiremonKey.SamplesFireMonkey содержит образцы, которые используют фреймворк FirekeyKey, чтобы обеспечить простой пользовательский интерфейс. Они соответствуют оригинальным примерам Blend2D, которые используют структуру QT. Большинство из этих приложений позволяют переключаться между встроенным рендерингом FireMonkey и рендерингом Blend2D. В настоящее время эти образцы работают только на Windows и MacOS. Особенности, запланированные для будущих выпусков, включают:
TPaintBox -подобный контроль для VCL и FireMonKey, который вместо этого рендерирует с использованием Blend42.Как Blend2d, так и Delphiblend2d выпускаются по лицензии Zlib. См. License.txt для деталей.