Я рисую растровое изображение в окне, и мне нужно эмулировать функциональность ImageLayout.Zoom.
Это то, что я сейчас использую:
if (_bitmap.Width > _bitmap.Height)
{
ZoomPercent = (int)(((double)ClientRectangle.Width) / ((double)_bitmap.Width) * 100);
}
else
{
ZoomPercent = (int)(((double)ClientRectangle.Height) / ((double)_bitmap.Height) * 100);
}
.. где ZoomPercent - это свойство, которое позволяет мне изменять соотношение, в котором отображается растровое изображение. Например, если ZoomPercent = 200, он будет отображать его с соотношением 200% или 2,0, поэтому растровое изображение 1000x1000 будет отображаться как 2000x2000.
В моей голове приведенный выше код должен работать, но это не так. Например, если растровое изображение имеет размер 800x600, то ширина больше, а если ClientRectangle равен 1000x1000, то он должен рассчитать 1000/800 = 1,25 * 100 = 125. Таким образом, 125%. Который растянет растровое изображение до 1000x750, который помещается в ClientRectangle. Однако это не работает при всех обстоятельствах.