Как сделать метафайл в C#

Пример Отображение метафайла Windows (wmf) в C# < / a> объясняет, как отображать метафайл и почему метафайлы могут давать лучшие результаты, чем растровые изображения, такие как те, которые хранятся в форматах BMP, JPG или PNG. В этом примере показано, как программа C# может создавать метафайл.

Примерная программа выполняет следующий MakeMetafile метод при запуске.

// Создаем метафайл, содержащий эпитрохоид.
private void MakeMetafile(string filename)
{
    // Получить объект Graphics, представляющий форму (для справки).
    using (Graphics gr = CreateGraphics())
    {
        // Получить hDC объекта Graphics. (Выпущено позже.)
        IntPtr hDC = gr.GetHdc();

        // Создаем метафайл, который может работать с hDC.
        Rectangle rect = new Rectangle(0, 0, 100, 100);
        Metafile mf = new Metafile(filename,
            hDC, rect, MetafileFrameUnit.Pixel);

        // Создаем объект Graphics для рисования на метафайле.
        using (Graphics mf_gr = Graphics.FromImage(mf))
        {
            // Гладкий; плавный.
            mf_gr.SmoothingMode = AntiAlias;

            // Переводим и масштабируем, чтобы сделать
            // изображение заполняет область метафайла.
            mf_gr.ScaleTransform(45, 45);
            mf_gr.TranslateTransform(50, 50, MatrixOrder.Append);
            using (Pen pen = new Pen(Color.Red, 0))
            {
                DrawEpitrochoid(mf_gr, pen, 13, 7, 9, 0.05f);
            }
        }

        // Отпустите hDC.
        gr.ReleaseHdc(hDC);
    }
}

Этот код создает объект Graphics для формы. Он не использует этот объект, он просто использует его для создания совместимого метафайла.

Затем программа вызывает метод GetHdc объекта Graphics, чтобы получить дескриптор контекста своего устройства. Важно, чтобы код позже выпускал этот дескриптор. К сожалению, контексты устройства неуправляемы. Это означает, что они не являются нормальными объектами .NET, поэтому они не реализуют интерфейс IDisposable, и вы не можете освободить их с помощью инструкции using. Вместо этого вы должны помнить о том, чтобы самостоятельно освобождать контексты устройств.

Затем код создает Rectangle, чтобы определить область рисования, которую будет представлять метафайл. Он использует этот Rectangle и контекст устройства для создания метафайла. Существует 39 перегруженных конструкторов для класса Metafile. Используемая здесь версия создает метафайл в файле.

После создания объекта Metafile программа создает связанный с ней объект Graphics. Затем он использует обычные методы Graphics для рисования метафайла. Метод DrawEpitrochoid выполняет большую часть работы. См. Пример Нарисуйте эпитрохоид в C# для получения информации о том, как программа рисует эпитрохоид.

После завершения создания метафайла программа использует следующий код для его отображения.

// Отображение метафайла.
picMetafile.Image = new Metafile(filename);

Источник: http://csharphelper.com/blog/2016/09/make-a-metafile-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector