Перечисление записей в метафайле в C#

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

Когда вы вводите имя метафайла и нажимаете кнопку Enumerate, следующий код перечисляет записи метафайла в ListBox слева от программы.

Программа очищает ListBox, делает Bitmap подходящей для области рисования и очищает ее. Затем открывается метафайл.

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

Следующий код показывает метод ListRecords.

Этот код просто добавляет имя каждой записи метафайла в ListBox программы. Он возвращает true, чтобы продолжить перечисление. (Если метод возвратил false, перечисление остановится, прежде чем перечислять все записи.)

После того, как вы перечислите записи, вы можете выбрать некоторые из них в ListBox. Затем, когда вы нажимаете кнопку «Рисовать», программа снова перечисляет записи метафайла, на этот раз используя следующий метод DrawRecords в качестве метода обратного вызова.

Переменная NextRecordNumber отслеживает индекс следующей записи метафайла. Метод DrawRecords начинается с проверки того, выбран ли этот номер записи в ListBox. Если запись выбрана, метод отображает сообщение в окне консоли и пропускает его.

Если запись метафайла не выбрана, код использует метод PlayMetafile метафайла для рисования текущей записи метафайла. (Переменные NextRecordNumber и TheMetafile инициализируются в коде, который вызывает EnumerateMetafile.)

Это позволяет вам изучить метафайл, чтобы узнать, какие записи он содержит.

Источник: http://csharphelper.com/blog/2016/12/enumerate-the-records-in-a-metafile-in-c/

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