Image変数で縦横比を維持してサイズ変更する方法

やりたいこと
Image変数に画像を格納したのち、DrawImageメソッドで縦横比を維持したままサイズ変更を行いたいです。

drawImage(image, dx, dy, dw, dh)

課題
①dwとdhに直接画像サイズを設定していますが、例えば倍率を指定する場合は元の画像サイズの情報が必要でしょうか?
②元の画像サイズがわかった上で、貼り付け先の最大サイズがあるためそれより小さいサイズ内で、縦横比の維持をすることは可能でしょうか?

複雑な要望で恐れ入りますが、良い方法があればご教示いただきたいです。