About IGDI+

The free open source library allows quick and easy implementations of complex GDI+ applications, in a natural Delphi-friendly code.
For example, to make this:

... you write code like this:
procedure TForm1.FormPaint(Sender: TObject);
var
AGraphics : IGPGraphics;
AFont : IGPFont;
ALeftTopCorner : TGPPointF;
ARect : TGPRectF;
ARect1 : TGPRectF;
APath : IGPGraphicsPath;
begin
AGraphics := TGPGraphics.Create( Canvas );
AGraphics.SmoothingMode := SmoothingModeAntiAlias;
AGraphics.TextRenderingHint := TextRenderingHintAntiAlias;
ALeftTopCorner := MakePointF( 20, 20 );
AFont := TGPFont.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(
TGPPen.Create( TGPLinearGradientBrush.Create( GPInflateRectF( ARect1, 2, 2 ), aclRed, aclBlue, LinearGradientModeVertical ), 4 ),
TGPPathGradientBrush.Create(
TGPGraphicsPath.Create().AddRoundRectangleF( ARect1, MakeSizeF( 20, 20 ) )
)
.SetInterpolationColorsArrays( [ aclGreen, aclCyan, aclYellow ], [ 0, 0.3, 1 ] )
.SetCenterPointF( MakePointF( 250, 50 ))
.SetFocusScales( 0.87, 0.2 ),
ARect1, MakeSizeF( 20, 20 ) );
// Draw a text with semitransparent shadow.
AGraphics.DrawString( 'Welcome to IGDI+',
AFont,
MakePointF( 23, 23 ),
TGPSolidBrush.Create( MakeARGBColor( 50, aclBlack )) )
.DrawString( 'Welcome to IGDI+',
AFont,
ALeftTopCorner,
TGPLinearGradientBrush.Create( ARect, aclRed, aclBlue, LinearGradientModeForwardDiagonal ));
// Draw a closed curve.
AGraphics.DrawClosedCurveF( TGPPen.Create( aclRed, 3 ), TGPSolidBrush.Create( aclBlue ),
[
MakePointF( 60, 160 ),
MakePointF( 150, 180 ),
MakePointF( 200, 140 ),
MakePointF( 180, 220 ),
MakePointF( 120, 200 ),
MakePointF( 80, 260 )
] );
// Draw a semitransparent star.
APath := TGPGraphicsPath.Create();
APath.AddLinesF(
[
MakePointF( 75, 0 ),
MakePointF( 100, 50 ),
MakePointF( 150, 50 ),
MakePointF( 112, 75 ),
MakePointF( 150, 150 ),
MakePointF( 75, 100 ),
MakePointF( 0, 150 ),
MakePointF( 37, 75 ),
MakePointF( 0, 50 ),
MakePointF( 50, 50 )
] );
AGraphics.TranslateTransform( 420, 30 )
.FillPath(
TGPPathGradientBrush.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(
TGPPen.Create( aclRed, 3 ),
TGPLinearGradientBrush.Create( MakePointF( 0, 0 ), MakePointF( 20, 20 ), aclYellow, aclGreen )
.SetWrapMode( WrapModeTileFlipX ),
0, 0, 200, 80 );
end;
Donate to the IGDI+ project
If you like the technology, and are willing to help us continue working on it, you can donate using the link bellow:
IGDI+ on GitHub
Please let us know if you are interested in contributing to the project development so we can consider adding you to the list of project members.
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.
OpenWire Libraries: for fast, complex data stream processing with almost zero lines of code!
This software is provided 'as-is', without any express or
implied warranty. In no event will the author be held liable
for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it
and redistribute it freely, subject to the following
restrictions:
1. The origin of this software must not be misrepresented,
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.