Dimensionando um System.Drawing.Bitmap para um determinado tamanho, mantendo a proporção

Eu quero escalar umSystem.Drawing.Bitmap para pelo menos menos que alguma largura e altura fixas. Isso é para gerar miniaturas de uma galeria de imagens em um site, portanto, quero manter a proporção da mesma forma.

Eu tenho algumas soluções, mas nenhuma parece realmente fazer o que eu preciso; eles giram em torno do dimensionamento baseado em manter a largura ou a altura iguais, mas sem alterar ambos.

Um exemplo:

Se eu tenho uma imagem de 4272 por 2848 e eu quero escalá-la para um tamanho de 1024 por 768, a imagem resultante deve ser 1024 por 683 e preenchida (com uma borda preta) para 1024 por 768.

Como posso fazer isso com imagens maiores que o tamanho requerido e menores do que o tamanho requerido e também imagens de bloco que não saem para o tamanho exato que eu preciso uma vez escalonado?

questionAnswers(3)

yourAnswerToTheQuestion