You can make a RenderTarget of any width and height.
You can optional set up that render target to be persistant by sending in PreserveContents as the final parameter when you create the render target.
You can set the render target to the GraphicsDevice in the Game1.Draw method.
You can then draw your current texture to that render target with Spritebatch.Draw
SpriteBatch.Draw has a parameter that you will see by the name of 'destination'.
That rectangle should have the same size as the render target its location should be 0,0.
Once drawn to the desired new size you then have the option to use the render target as if it were a texture.
This means you can call save on it, in order to write it to file.
You can use it as a texture and draw it to the back buffer.
You can draw it with SpriteBatch.Draw using the scale parameter or by destination again.
If you made your render target persistent you can keep it around.
However this would be frowned upon by many as well as re-scaling and not pre-scaling the texture before loading. In addition this may not be supported on older hardware and on new hardware may incur a performance penalty.
However i digress.
I believe the above answers to this part of the question generally.
Purpose: I would like to resize a button from 567x634 to 400x480 and
then using scale to further reduce it
While the below is not exactly a clear question, i surmise you are asking why?
Problem: It seems like the Draw() call allows us to use either
Destination Rectangle for resizing (5of8) or Scale (6of8/7of8) but not
both.
The act of setting a destination Rectangle means that scaling is implicit.
E.G. i have a texture of width and height 100,100 and i set it to a destination rectangle on screen of new Rectangle(0,0,80,80);
That is equivillent to performing a scaling of .8f,.8f on the width and height of the texture. i.e. 100 *.8 = 80.
Therefor it would be first of all confusing, additionally it would be open to alternate interpretations to the operational precedence of what scaling operation happens in what order, finally it would be pointless to have both the destination and scaling parameter in the same overload.
(5of8)
. I'm not sure if that's something specific to XNA. Could you maybe provide more details? \$\endgroup\$