Result form has drawing tools. Now it's: Pen, Marker, Pixelate, and
Eraser.

I created custom ToolStripButton - it's FoxToolStripButton, which
has one extra property - ShapeType. ShapeType is tool type of
drawing.

You can see the variable _shapes in a Result form code.
This is collection of shapes. Shape can be added to the collection when a user
clicks on the button tool, excluding eraser. All tool buttons has one click
handler, is btnShapeType_Click. The variable _shapeType contains
information about type of selected shape.

The drawing tools may have config forms. I crated base class for config forms - ConfigShapeForm.
Pen tool is ConfigPen, Pixelate tool is ConfigPixelate.
Configuration from can be displayed before start drawing (Pen), or after
(Pixelate). The variable _shapeConfig contains link to configuration form for
current shape.

Drawing starts after clicking the left mouse button on a PictureBox, you can
see it in the MouseDown event handler. To add a shape to collection
using the AddShape method. For Pixelate type of shape, the item is
added to the top of the list. For other types of shapes, a item is added to the
bottom of a list.

Shapes is drawing in the DrawShapes method to the Graphics object.
The finished image can be generated by GetImage method, or GetImageBuffer
for byte array.

Sending images to Internet created via API.FoxTools.ru. This is my independent project and currently it's only
for russian language, sorry. But you can do sending data to your server, without
my API. It's easy. You can use my helper class from FoxTools.Lib.dll.

You can use FoxTools.Lib.dll for other projects, I don't forbid it. But
you do not have permissions for disassemble the library. As for API, you can use
it, if you will understand how it works. I created opening API key special for
CodeProject members: ID = 13, Access key = e91268b7-1162-4044-9236-7191c8c3b5d2.
FoxTools Screen Shooter using other limited Access key, you can see it in the
Settings window.

For this Access key set permissions only on the Screen and the ZzWeb API methods. But the API has many more methods and CodeProject
Key has permissions for all this methods.
For example, a request for information about the IP address:

Share

About the Author

At various times worked with programming languages and technologies: Visaul Basic, Delphi, C, Visual C++, Java, PHP, ASP VBScript and JScript.

Currently engaged in programming based on .NET Framework technologies. Mainly the development of websites on the ASP.NET MVC, C#, TypeScript, SCSS and also database programming (SQL Server and PostgreSQL).