Create a function that returns an expression "canceled"?

I want to build a function that returns an expression “canceled”. There goes my code.

SetAttributes[cancel,HoldFirst];
cancel[expr_]:= Show[
    Graphics[{
    {Arrowheads[{.04}],Arrow[{{-0.0001,-0.0001},{0.0001,0.0001}}]},
    {Text[expr]}
    }], ImageSize-> Tiny,BaselinePosition-> Bottom];
Divide[Row[{cancel[""(x-a)],x^n}],Row[{""(x^2+7),cancel[""(x-a)]}]]

• The coordinates of Arrow are not working (I thing).

• Am I missing something?

• Is there a better way to make the same thing?

• Does Mathematica have some similar procedure?

Thanks