How to set the horizontal scale factor of a Circle using FabricJS?

In this tutorial, we are going to learn how to set the horizontal scale factor of a Circle using FabricJS. Circle is one of the various shapes provided by FabricJS. In order to create a circle, we will have to create an instance of fabric.Circle class and add it to the canvas. Just as we can specify the position, colour, opacity and dimension of a circle object in the canvas, we can also set the horizontal scale of a circle object. This can be done by using the scaleX property.

Syntax

new fabric.Circle({ scaleX : Number }: Object)

Parameters

  • options (optional) ? This parameter is an Object which provides additional customizations to our circle. Using this parameter, properties such as colour, cursor, stroke width and a lot of other properties can be changed related to the object of which scaleX is a property.

Options Keys

  • scaleX ? This property accepts a Number value. The value that is assigned, determines the horizontal object scale factor. Its default value is 1.

Example 1: Default Appearance (scaleX = 1)

Let's see a code that displays the appearance of our circle object when the scaleX property is not used. By default, the horizontal scale factor of the circle object is 1. The scaleX determines the transformation that resizes an object along the X-axis.

<!DOCTYPE html>
<html>
   <head>
      <!-- Adding the Fabric JS Library-->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
   </head>

   <body>
      <h2>Setting the horizontal scale factor of circle using FabricJS</h2>
      <p>This is the default horizontal scale factor. We have not used the <b>scaleX</b> property, but by default, it is set to 1. </p>
      <canvas id="canvas"></canvas>

      <script>
         // Initiate a canvas instance
         var canvas = new fabric.Canvas("canvas");
         var circle = new fabric.Circle({
            left: 115,
            top: 50,
            padding: 7,
            radius: 50,
            fill: "#85bb65"
         });
         canvas.add(circle);
         canvas.setWidth(document.body.scrollWidth);
         canvas.setHeight(250);
      </script>
   </body>
</html>

Example 2: Using scaleX Property

In this example, we are passing the scaleX property as a key with a value of 2. This means that the circle object's scale factor in the horizontal direction is doubled, making it appear as an ellipse stretched horizontally.

<!DOCTYPE html>
<html>
   <head>
      <!-- Adding the Fabric JS Library-->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
   </head>

   <body>
      <h2>Setting the horizontal scale factor of circle using FabricJS</h2>
      <p>Notice the horizontal scale factor of the object. Here we have set <b>scaleX</b> at 2, so the object appears stretched in the horizontal direction. </p>
      <canvas id="canvas"></canvas>
   
      <script>
         // Initiate a canvas instance
         var canvas = new fabric.Canvas("canvas");
         var circle = new fabric.Circle({
            left: 115,
            top: 50,
            padding: 7,
            radius: 50,
            scaleX: 2,
            fill: "#85bb65"
         });
         canvas.add(circle);
         canvas.setWidth(document.body.scrollWidth);
         canvas.setHeight(250);
      </script>
   </body>
</html>

Key Points

  • The scaleX property controls horizontal scaling along the X-axis

  • Default value is 1 (no scaling)

  • Values greater than 1 stretch the object horizontally

  • Values less than 1 compress the object horizontally

Conclusion

The scaleX property in FabricJS allows you to control the horizontal scaling of circle objects. By adjusting this value, you can create various visual effects and transform circles into elliptical shapes stretched along the X-axis.

Updated on: 2026-03-15T23:19:00+05:30

286 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements