- Treat each corner, your starting position and the destination as nodes (= 802 nodes).
- select the starting position
- find all nodes in direct sight of the current position and add them to the open-list
- while finding the nodes you should also calculate their price (distance + H) (and perform regular A* stuff - add current node as previous if unvisited or cheaper)
- jump to cheapest node on the open-list and goto step 3) if this is not the destination.
Since all the rectangles are axis aligned ray tracing shouldn't make that big of an impact, as long as you only move one step at a time (don't calculate the connections between all 802 nodes, only calculate the connections between your current position and all other 801 nodes) assuming you only need 10 steps from end to end, that's ~ 10*801 as compared to 802^2 as I suspect you are doing.
Also don't use a grid. The 802 nodes are the ones you should use