The free open source library allows quick and easy implementations of complex GDI+ applications, in a natural Delphi-friendly code.
procedure TForm1.FormPaint(Sender: TObject);
begin
var AGraphics := TIGPGraphics.Create( Canvas );
AGraphics.SmoothingMode := TIGPSmoothingMode.AntiAlias;
AGraphics.TextRenderingHint := TIGPTextRenderingHint.AntiAlias;
var ALeftTopCorner := TPointF.Create( 20, 20 );
var AFont := TIGPFont.Create( 'Microsoft Sans Serif', 40, [ fsBold ] );
var ARect := AGraphics.GetStringBoundingBoxF( 'Welcome to IGDI+', AFont, ALeftTopCorner );
var ARect1 := ARect.Inflate( 10, 10 );
// Draw a fancy rounded rectangle.
AGraphics.DrawRoundRectangleF(
TIGPPen.Create( TIGPLinearGradientBrush.Create( ARect1.Inflate( 2, 2 ), aclRed, aclBlue, TIGPLinearGradientMode.Vertical ), 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, TIGPLinearGradientMode.ForwardDiagonal ));
// 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.
var 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( TIGPWrapMode.TileFlipX ),
0, 0, 200, 80 );
end;
If you like the technology, and are willing to help us continue working on it, you can donate using the link bellow:
Our component libraries come in 3 versions a VCL - Firemonkey version (for Delphi / C++ Builder / RAD Studio 10.3 or higher), an MFC compatible Visual C++ version, and a .NET 4.0 supporting Visual Studio 2005 or higher.
The RAD Studio version is a set of native VCL and Firemonkey components of which all include now the powerful Mitov Runtime.
The Visual C++ version is a set of native Visual C++ classes (components).
The NET 4.0 (4.5 and higher compatible) version is a set of managed .NET components. The .NET version has the same performance as the native versions, and supports all the Microsoft .NET languages including Visual Basic, C#, J#, F# and C++/CLI.
Due to the unique architecture of the OpenWire platform, the components are implemented the same way in Managed .NET and native Windows (32 and 64 bit) environments. The code to control a component from VB.NET, C++/CLI, C#, and J#, Visual C++ MFC, Delphi, and C++ Builder is almost identical. This allows the developers to migrate and share code between the different environments thus significantly improving the productivity.