dotnet / winforms

Windows Forms is a .NET UI framework for building Windows desktop applications.
MIT License
4.44k stars 988 forks source link

GDI/BitBlt features for .NET Core? #11347

Open vsfeedback opened 6 months ago

vsfeedback commented 6 months ago

This issue has been moved from a ticket on Developer Community.


I have introduced myself to developing with .NET 8 - specifically, to learn web development with Blazor and .NET in particular; since it has been quite some time since I've been involved in Web projects. As I dive deeper into the rabbit hole, there is an old project that I would like to resurrect, preferably as something that I could develop cross-platform. I created a Chronometer ActiveX control back in the early 2000's using VB 6.0 and created a Winform app a few years back to utilize it. ActiveX is completely dead now, so I would like to resurrect this project completely in .NET.

Bd5bd95f1f0f24377adf056875f50dbcf638465538565816047_Stopwatch

The original control was derived from a PictureBox, and used the Win32 GDI library's BitBlt to place the displays elements from a source image container. I would LOVE to port this project to a modern implementation, ideally without that dependency. I've looked around, and have only come across one possible source, which was a book on the available Canvas Bitmap operations using JavaScript. Since part of my regimen to learn Blazor/.NET 8 development has been to take fun little HTML/CSS/JavaScript projects (such as a calculator, or clock) and refactoring the JS scripts with C# code, I would rather not go that route...

Are there any .NET libraries (part of .NET or 3rd party) that include bitmap operations for .NET Core? Ideally, I'm looking for the overload that allowed for taking a region from a bitmap source to paint on a specified region on the target canvas. Thanks!


Original Comments

Feedback Bot on 3/20/2024, 10:15 PM:

(private comment, text removed)

JeremyKuhne commented 6 months ago

ActiveX is still fully supported, and you can still host VB6 controls in WinForms on .NET 8 (but only on 32bit).

System.Drawing will let you do most of what you need (with GDI+), if there are specific GDI things you want to do you can use something like CsWin32 to quickly wrap Win32 GDI calls you want to make.