I’m having an issue where I’m trying to create a custom cursor/crosshair within my canvas. The issue I have is the specified Length, Width, and Gap given to the four rectangles to form the cursor is producing the incorrect amount of pixels for the center gap.
Live CodeSandbox: https://codesandbox.io/s/nifty-resonance-bcl0m
In the above example, measuring the cursors Length and Width is the correct amount but, the center gap is giving 10 pixels instead of 6 pixels (Gap * 2). I know the issue must be due to how I’m calculating the X/Y positions of each rectangle but I can’t seem to find the correct formula that doesn’t throw off the whole look of the cursor.
Advertisement
Answer
its happening because you are calculating the gap twice:
your code:
const length = 6;
const width = 4;
const gap = 3;
const x = 400 / 2;
const y = 400 / 2;
return (
<div className="App">
<Stage width={400} height={400}>
<Layer>
{/* Horizontal Rectangles */}
<Rect
x={x + (width / 2 + gap)}
y={y - width / 2}
width={length}
height={width}
fill="green"
/>
</layer>
</div>
when calculating the horizontaal length you are doing: (width / 2) + gap == (4/2) + 3 = 5. you can drop the width from the calculation to have a gap of 6