# EasyGaugePolygon

| Support            | ![](assets/images/sample_programs/applies_to/cpp.svg) ![](assets/images/sample_programs/applies_to/cs.svg)   |
|--------------------|--------------------------------------------------------------------------------------------------------------|
| Required licenses  | **EasyGauge**                                                                                                |
| Recommended images | Any gray level image from the folder `Sample Images/EasyGauge`                                               |
| Location           | `Matching and Measurement/EasyGaugePolygon`                                                                  |

## Purpose

This sample program demonstrates how to:

- Use the class `EPolygonGauge` of the **EasyGauge** library.
- Edit the geometry of the gauge and change the main parameters.
- Configure various display options.

![](assets/images/sample_programs/matching-easygaugepolygon.webp)

## Code highlights

1. Initialize a default polygon gauge on the loaded image.
   ```c++
   m_PolygonGauge.SetCenterXY(m_Image.GetWidth() / 2.f, m_Image.GetHeight() / 2.f);
   float half_size = m_Image.GetWidth() / 4.f;
   m_PolygonGauge.AppendVertex(EPoint(half_size, half_size));
   m_PolygonGauge.AppendVertex(EPoint(half_size, -half_size));
   m_PolygonGauge.AppendVertex(EPoint(-half_size, -half_size));
   m_PolygonGauge.AppendVertex(EPoint(-half_size, half_size));
   m_PolygonGauge.SetTolerance(m_Image.GetHeight() / 20.f);
   ```
2. Draw the image and the nominal polygon gauge.
   ```c++
   SourceImage.Draw(drawAdapter, m_fZoomFactor, m_fZoomFactor, m_OrgX, m_OrgY);
   gauge.SetZoom(m_fZoomFactor);
   gauge.SetPan(m_OrgX, m_OrgY);
   gauge.Draw(drawAdapter);

   if (m_bViewPoints)
     gauge.Draw(drawAdapter, EDrawingMode_SampledPoints);
   ```
3. Create a new vertex when you clikc on the left button.
   ```c++
   if (PolygonGauge.GetHitHandle() == EDragHandle_NoHandle)
   {
     PolygonGauge.AddVertexAtDisplayPosition(point.x, point.y);
   }
   ```
