# Gradient Tool Values for binding/expression purposes

**URL:** <https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859>\
**Category:** Ignition\
**Tags:** vision, ignition81\
**Created:** [October 23, 2023, 2:54pm UTC](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859 "2023-10-23T14:54:51Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [January 4, 2025, 12:02pm UTC](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859/23 "2025-01-04T12:02:35Z")

</div>

I don't have an example to provide at this time, but if you look under the hood of my Bananas game, I use affine transform to rotate the monkeys when they fall off the buildings. It's a fairly straight forward function.

---

<div class="post-metadata">

**Author:** ![AlbinoBigFoot](https://avatars.discourse-cdn.com/v4/letter/a/8baadc/32.png) [@AlbinoBigFoot](https://forum.inductiveautomation.com/u/AlbinoBigFoot)\
**Post date:** [August 15, 2025, 11:04am UTC](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859/24 "2025-08-15T11:04:58Z")

</div>

Old thread but could you share how you got the animation so smooth? I am struggling to get it not to look choppy.

---

<div class="post-metadata">

**Author:** ![zxcslo](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zxcslo/32/61610_2.png) [@zxcslo](https://forum.inductiveautomation.com/u/zxcslo)\
**Post date:** [August 17, 2025, 3:56am UTC](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859/25 "2025-08-17T03:56:57Z")

</div>

Why don’t you show us, what/how are you doing?

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [August 17, 2025, 7:48am UTC](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859/26 "2025-08-17T07:48:34Z")

</div>

> [@AlbinoBigFoot](#):
>
> how you got the animation so smooth

I control the pacing of my animations with a timer component. I simply add a custom integer property to the paintable canvas, and I bind the custom prop to the value property on the timer. In this way, the canvas will repaint every time the timer counts. For my animations, I usually set the timer to count in hundredths, so the animations move at approximately 100 frames per second. This usually produces a smooth movement that doesn't significantly impact overall performance. Remember that the canvas will repaint anytime a custom property changes value, so if coordinate data needs to be stored somewhere to track objects that are being rendered by the canvas, that data should be stored in the parent container instead of on the canvas itself. If too many things are triggering unintended repaints, the resultant uneven pacing will become noticeable to the user.

[Previous page](https://forum.inductiveautomation.com/t/gradient-tool-values-for-binding-expression-purposes/80859.md?page=1)
