Модифицированная библиотека Igdiplus для Lazarus, Codetyphon и Delphi.
Бесплатная библиотека с открытым исходным кодом для Delphi. Это позволяет быстро и простые реализации сложных приложений GDI+, в естественном коде, подходящем для Паскаля.
Автор: Боян Митов
Домашняя страница: http://mitov.com/products/igdi+#overview
http://mitov.com/products/igdi+#license
Это программное обеспечение предоставляется «как есть», без какой-либо явной или подразумеваемой гарантии. Ни в коем случае автор не будет нести ответственность за любые убытки, возникающие в результате использования этого программного обеспечения.
Разрешается всем, кто использует это программное обеспечение для любых целей, включая коммерческие приложения, а также изменять его и свободно перераспределить, при условии следующих ограничений:
Происхождение этого программного обеспечения не должно быть искажено, вы не должны утверждать, что вы написали оригинальное программное обеспечение. Если вы используете это программное обеспечение в продукте, подтверждение документации по продукту будет оценено, но не требуется.
Измененные версии источника должны быть четко обозначены как таковые и не должны быть искажены как исходное программное обеспечение.
Это уведомление не может быть удалено или изменено из любого распределения источников.
Вы можете делать с моим кодом, что бы вы ни хотите, без каких -либо затрат и без каких -либо ограничений.
IGDIPlusHelpers.pas , IGDIPlusAPI_FPC.inc , IGDIPlusAPI_DCC.inc .Оригинальное демо -приложение Igdiplus, составленное с Lazarus.

Дополнительная демонстрация - цветовое колесо

Демо 1 Основная процедура.
procedure TForm1.FormPaint (Sender: TObject);
var
AGraphics : IGPGraphics;
AFont : IGPFont;
ALeftTopCorner : TPointF;
ARect : TIGPRectF;
ARect1 : TIGPRectF;
APath : IGPGraphicsPath;
begin
AGraphics := TIGPGraphics.Create( Canvas );
AGraphics.SmoothingMode := SmoothingModeAntiAlias;
AGraphics.TextRenderingHint := TextRenderingHintAntiAlias;
ALeftTopCorner := TPointF.Create( 20 , 20 );
AFont := TIGPFont.Create( ' Microsoft Sans Serif ' , 40 , [ fsBold ] );
ARect := AGraphics.GetStringBoundingBoxF( ' Welcome to IGDI+ ' , AFont, ALeftTopCorner );
ARect1 := GPInflateRectF( ARect, 10 , 10 );
// Draw a fancy rounded rectangle.
AGraphics.DrawRoundRectangleF(
TIGPPen.Create( TIGPLinearGradientBrush.Create( GPInflateRectF( ARect1, 2 , 2 ), aclRed, aclBlue, LinearGradientModeVertical ), 4 ),
TIGPPathGradientBrush.Create(
TIGPGraphicsPath.Create().AddRoundRectangleF( ARect1, TIGPSizeF.Create( 20 , 20 ) )
)
.SetInterpolationColorArrays( [ aclGreen, aclCyan, aclYellow ], [ 0 , 0.3 , 1 ] )
.SetCenterPointF( TPointF.Create( 250 , 50 ))
.SetFocusScales( 0.87 , 0.2 ),
ARect1, TIGPSizeF.Create( 20 , 20 ) );
// Draw a text with semitransparent shadow.
AGraphics.DrawStringF( ' Welcome to IGDI+ ' ,
AFont,
TPointF.Create( 23 , 23 ),
TIGPSolidBrush.Create( MakeARGBColor( 50 , aclBlack )) )
.DrawStringF( ' Welcome to IGDI+ ' ,
AFont,
ALeftTopCorner,
TIGPLinearGradientBrush.Create( ARect, aclRed, aclBlue, LinearGradientModeForwardDiagonal ));
// Draw a closed curve.
AGraphics.DrawClosedCurveF( TIGPPen.Create( aclRed, 3 ), TIGPSolidBrush.Create( aclBlue ),
[
TPointF.Create( 60 , 160 ),
TPointF.Create( 150 , 180 ),
TPointF.Create( 200 , 140 ),
TPointF.Create( 180 , 220 ),
TPointF.Create( 120 , 200 ),
TPointF.Create( 80 , 260 )
] );
// Draw a semitransparent star.
APath := TIGPGraphicsPath.Create();
APath.AddLinesF(
[
TPointF.Create( 75 , 0 ),
TPointF.Create( 100 , 50 ),
TPointF.Create( 150 , 50 ),
TPointF.Create( 112 , 75 ),
TPointF.Create( 150 , 150 ),
TPointF.Create( 75 , 100 ),
TPointF.Create( 0 , 150 ),
TPointF.Create( 37 , 75 ),
TPointF.Create( 0 , 50 ),
TPointF.Create( 50 , 50 )
] );
AGraphics.TranslateTransform( 420 , 30 )
.FillPath(
TIGPPathGradientBrush.Create( APath )
.SetCenterColor( MakeColor( 200 , 255 , 0 , 0 ))
.SetSurroundColors(
[
MakeColor( 80 , 0 , 0 , 0 ),
MakeColor( 80 , 0 , 255 , 0 ),
MakeColor( 80 , 0 , 0 , 255 ),
MakeColor( 80 , 255 , 255 , 255 ),
MakeColor( 80 , 0 , 0 , 0 ),
MakeColor( 80 , 0 , 255 , 0 ),
MakeColor( 80 , 0 , 0 , 255 ),
MakeColor( 80 , 255 , 255 , 255 ),
MakeColor( 80 , 0 , 0 , 0 ),
MakeColor( 80 , 0 , 255 , 0 )
] ),
APath );
// Draw rotated ellipse.
AGraphics.ResetTransform()
.TranslateTransform( 300 , 160 )
.RotateTransform( 30 )
.DrawEllipseF(
TIGPPen.Create( aclRed, 3 ),
TIGPLinearGradientBrush.Create( TPointF.Create( 0 , 0 ), TPointF.Create( 20 , 20 ), aclYellow, aclGreen )
.SetWrapMode( WrapModeTileFlipX ),
0 , 0 , 200 , 80 );
end ; В каталоге пакетов вы найдете пакеты для Delphi XE2 - 10.3 Rio. Установите соответствующий пакет (файл DPK), затем в параметрах IDE добавьте в каталог путей библиотеки с помощью файла IGDIPlus.pas .
У вас есть два варианта:
packagesLazaruslazigdiplus.lpk .LazIGDIPlus в необходимые пакеты .IGDIPlus.pas в параметры компилятора -> Paths -> Другие файлы модуля . Продолжайте, как в случае с Lazarus, только файл с пакетом установки - packagesCodeTyphonlazigdiplus.ctpkg .
23.01.2020
Delphi XE2 и XE3 Поддержка.
Добавлены пакеты для Delphi XE2 - 10.3 Rio.
Добавлена главная демонстрация для XE2, демонстрация цветового колеса для XE2 и XE7.
Igdiplushelpers: несколько вспомогательных процедур, связанных с преобразованием хэтчстиля.
19.01.2020
Добавлены пакеты для Lazarus и Codetyphon.
15.01.2020
Первоначальный выпуск с бесплатной поддержкой Pascal.