How make a infinite Drag UI?

I want to make a Infine UI, such as a Canvas, user can draw element (line , point) on it , and can move and scale the canves. And the Canvas seems infinte, user can scale in a limited range, but can move to every position of the canvas(by drag / scale the canvas panel in the viewport/parent widget)?

Is there some advice?