Skip to content

πŸ–ŒοΈ A WinForms hybrid control that supports Direct2D and GDI+ drawing

License

Notifications You must be signed in to change notification settings

d2phap/DXControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0a2567c Β· Nov 30, 2024

History

99 Commits
Nov 30, 2024
Jul 26, 2022
Nov 30, 2024
Nov 9, 2024

Repository files navigation

D2Phap.DXControl

  • A WinForms control that supports drawing with Direct2D thanks to WicNet.
  • This control has been used in ImageGlass software since version 9.0.

Nuget

Resource links

Features

  • High performance drawing using Direct2D.
  • Names and types are exactly the same as the native concepts of Direct2D (interfaces, enums, structures, constants, methods, arguments, guids, etc...). So you can read the official documentation, use existing C/C++ samples, and start coding with .NET right away.
  • All native COM interfaces are generated as .NET (COM) interfaces, this makes .NET programming easier, but they are not strictly needed.
  • Option to use Software or Hardware render target
  • Supports animation drawing with Direct2D.

Requirements:

  • .NET 6.0, 7.0, 8.0

Installation

Run the command

Install-Package D2Phap.DXControl

Example

Draws a rectangle, then moves it to the right side.

using D2Phap.DXControl;

// create a WinForms custom control that extends from DXCanvas
public class DemoCanvas : DXCanvas
{
    private RectangleF animatableRectangle = new(100, 100, 400, 200);

    public DemoCanvas()
    {
        EnableAnimation = true;
        UseHardwareAcceleration = true;
    }

    protected override void OnRender(DXGraphics g)
    {
        // draw a yellow rectangle with green border
        g.FillRectangle(rectText, Color.FromArgb(100, Yellow));
        g.DrawRectangle(rectText, Color.Green);
    }

    // Update frame logics for animation
    protected override void OnFrame(FrameEventArgs e)
    {
        // animate the rectangle to the right
        animatableRectangle.left++;
    }
}

See Demo project for full details.

License

MIT

Support this project

Thanks for your gratitude and finance help!