Я рисую изображение из MetaFile (emf), а затем применяю некоторые преобразования вращения ко всем внутри OnPaint UserControl. После применения этих преобразований, как я могу вычислить нормальный нетрансформированный прямоугольный ограничивающий прямоугольник этого в экранных координатах? Мне нужно это, чтобы иметь возможность изменять размер повернутого изображения до размера UserControl.Вычислить ограничительную рамку чертежа GDI +
protected override void OnPaint(PaintEventArgs e)
{
// rotate around the center of this UserControl
e.Graphics.TranslateTransform(this.Width/2.0f, this.Height/2.0f);
e.Graphics.RotateTransform(this.Rotation);
e.Graphics.TranslateTransform(this.Width/-2.0f, this.Height/-2.0f);
// TODO: now scale so the image so it fits exactly into this UserControl
// draw the image at the center of this UserControl
float left = (this.Width - ResourceManager.MyDrawingMetaFile.Width)/2.0f;
float top = (this.Height - ResourceManager.MyDrawingMetaFile.Height)/2.0f;
e.Graphics.DrawImage(Resources.MyDrawingMetaFile, left, top);
}
Вся идея в том, что я хочу, чтобы отобразить повернут .emf файл в UserControl и имею эдс рисунок заполнить ВСЕГДА доступное пространство в UserControl. Может быть, есть лучший подход?
Заполненный режим/растягивание, которое я получаю, равномерно и равномерно заполнено (как в окне просмотра WPF). ЭДС не должна быть искажена в едином режиме. ЭДС полностью заполняет пользовательский контроль, по крайней мере, в одном измерении, ничто не обрезается. В UniformToFill emf заполняет UserControl в обоих измерениях, и если aspectratios не совпадают, emf обрезается в одном измерении.
Как вы хотите, чтобы это «заполнило»? Если ЭДС полностью покрывает пользовательский контроль (должна ли какая-то часть э.д.с. быть обрезана) или должна ли она быть такой, чтобы вся ЭДС была видимой - оставив части пользовательского контроля? И должна ли emf сохранить исходное соотношение сторон или нет? –
Заполненная/растягиваемая мода, которую я получаю, является Uniform и UniformToFill (как в окне просмотра WPF). ЭДС не должна быть искажена в едином режиме. ЭДС полностью заполняет пользовательский контроль, по крайней мере, в одном измерении, ничто не обрезается. В UniformToFill emf заполняет UserControl в обоих измерениях, и если aspectratios не совпадают, emf обрезается в одном измерении. – bitbonk