*scratches head* Scriptwise, I was thinking of something like Near Fantastica's existing View Range script, which might need very little modifying if any at all.
Of course, it's also possible to do it in a simple call script instead, in the event, within only a few lines of code, telling it to check if player is within x or y of event or screen, show picture, if player is within a or b of event (to be underneath), fade picture - but if Near Fantastica's script does the job, no need.
As per the picture, I figured simply create individual pictures of the building tops you need to - so unless you're using absolutely massive, MASSIVE maps with several dozen variations on the rooftops, you could just have, say, a dozen different rooftops that can be used as pictures. Fade them out one at a time when near them, as opposed to a massive overlay. I think the picture limit is 50. It might be a little more work than if someone made the script for you, but it would be far prettier.
But again, really, it'd be easier for you if you could just get a simple script to do what you want. I'm just saying this alternative (which is pretty) isn't going to require a massive, massive PNG, unless you MUST have many, many rooftops which are all completely distinct.