Меня смущает создание метафайла и его размеры при рисовании на нем изображений и прямоугольников.
У меня есть растровое изображение определенного размера (1010 x 761 пикселей при 96 DPI), которое я в конечном итоге хочу обернуть в изображение EMF шириной 100 мм с пропорциональной высотой (которая оказывается равной 120 мм) и также нарисуйте над ним прямоугольник в известном мне месте относительно размеров растрового пикселя (например, при 50,50 x 100 100).
Следующий код используется для создания метафайла нужных размеров в мм и Графический объект для последующего рисования:
var size = new Size(160,120);
using (var offScreenBufferGraphics = Graphics.FromHwndInternal(IntPtr.Zero))
{
IntPtr deviceContextHandle = offScreenBufferGraphics.GetHdc();
try
{
Metafile = new Metafile(stream, deviceContextHandle, new RectangleF(0, 0, size.Width, size.Height), MetafileFrameUnit.Millimeter, EmfType.EmfPlusOnly);
}
finally
{
offScreenBufferGraphics.ReleaseHdc();
}
}
graphics = Graphics.FromImage(Metafile);
Однако, когда я пытаюсь нарисовать растровое изображение, а также прямоугольник на графике, размеры кажутся чрезвычайно странными.
Следующий код пытался нарисовать растровое изображение для заполнения всей EMF:
var sourceBitmap = Image.FromFile(@"C:\temp\example.png");
var srcRect = new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height);
var dstRect = new Rectangle(0, 0, size.Width, size.Height );
graphics.PageUnit = GraphicsUnit.Millimeter;
graphics.DrawImage(sourceBitmap, dstRect, srcRect, GraphicsUnit.Pixel);
Однако растровое изображение не заполняет всю EMF (см. Результат ниже).
Кроме того, мне неясно, что указывать в виде прямоугольника при попытке закрасить прямоугольник над растровым изображением в заданной позиции. Следующий код не работает:
graphics.PageUnit = GraphicsUnit.Millimeter;
graphics.DrawRectangle(new Pen(Color.Red, 3.0f), new Rectangle(50, 50, 100, 100));
Вот вывод моих попыток: синяя рамка обозначает растровое изображение, которое, очевидно, не заполняет ЭДС. Зеленый прямоугольник - то, где должен быть нарисованный прямоугольник.
Я действительно потерян здесь. Что я делаю не так?
![enter image description here](https://i.stack.imgur.com/LtKRn.jpg)