First of all, why would you mark an answer as having solved your issue when you still have questions about it?
Secondly, you're adding a Rectangle before creating it. Your order is all messed up here:
RecList.Add(rect);
RecList = RecList.Distinct().ToList();
rect = new Rectangle(buttcorrs[0], buttcorrs[1], buttcorrs[3] - buttcorrs[1], buttcorrs[2] - buttcorrs[0]);
If you don't understand the basics (ie. you have to create something before you can add it to something else) then you need to take some steps backwards and start at the beginning.
I do like that you're making sure there aren't any duplicates.
Try switching the last line to before
RecList.Add(rect)
.
Actually, I just saw what the problem was with your comment.
You have a globally declared variable called rect.
Then, you do
foreach (Rectangle rect in...)
you can't declare another variable with the same name as one that's global. try a different name.