# Paintable Canvas Hacks

**URL:** <https://forum.inductiveautomation.com/t/paintable-canvas-hacks/85437>\
**Category:** Ignition\
**Tags:** vision\
**Created:** [February 8, 2024, 3:25pm UTC](https://forum.inductiveautomation.com/t/paintable-canvas-hacks/85437 "2024-02-08T15:25:06Z")\
**Posts on this page:** 1\
**Showing post:** 11

<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:** [June 23, 2024, 4:48am UTC](https://forum.inductiveautomation.com/t/paintable-canvas-hacks/85437/11 "2024-06-23T04:48:11Z")

</div>

**Using the paintable canvas as an overlay:**

![PaintableCanvasFloatingOutlineDemo](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/b/db35740bde6ed1da2cc04e3f32d44cc4b28fd6dc.gif)

> [@Component outline on different z-order than component](https://forum.inductiveautomation.com/t/component-outline-on-different-z-order-than-component/92128/16):
>
> The paintable canvas can be used as an overlay to provide this effect without any regard to z-order or component positioning. Simply overlay the entire container with a paintable canvas, and use the canvas's mouse moved event to detect when the cursor intersects a component, so a top level outline can be painted around it: Example: Add the following custom properties to the canvas: [image] Add the following custom methods to the canvas: 
> 
> > **passMouseEvent**
> >
> > #def passMouseEvent(self, event): "…

---

_[View the full topic](https://forum.inductiveautomation.com/t/paintable-canvas-hacks/85437)._
