Программирование WPF, XPS, NET. Как установить шрифт из памяти в NETFrameWork. Как внедрить в XPS документ шрифт из памяти. AddFontMemResourceEx в WPF.

В WindowsAPI есть функция AddFontMemResourceEx , которая позволяет инсталлировать в систему шрифт из памяти приложения. В WPF шрифт задается через URI. Как же использовать шрифт, если он был создан в памяти. Надо получить URI ресурса который динамически создан в памяти.

Есть вариант сделать это через временный файл:

Uri GetMemResourceUri(byte[] in_memory_resource)
{
     MemoryStream resourceStream = new MemoryStream(in_memory_resource);
     string tempPath = System.IO.Path.GetTempPath() + (TempFileInd++).ToString();
     FileStream tempStream = new FileStream(tempPath, FileMode.Create,FileAccess.Write);
     CopyStream(resourceStream, tempStream);
     tempStream.Close();
     return new Uri(tempPath);
}

 

Можно сделать это и без использование временных файлов.

 

Uri GetMemResourceUri(byte[] in_memory_resource,int Size)
{
     MemoryStream packStream = new MemoryStream();
     Package pack = Package.Open(packStream,FileMode.Create,FileAccess.ReadWrite);
     Uri packUri = new Uri("AnyTextBeforeColon:");
     PackageStore.AddPackage(packUri, pack);
     Uri packPartUri = new Uri("/SomeTextAfterSlash", UriKind.Relative);
     //PackagePart packPart = pack.CreatePart(packPartUri, "application/vnd.ms-opentype");
     PackagePart packPart = pack.CreatePart(packPartUri, "SomeTextBeforeSlash/SomeTextAfterSlash");
     packPart.GetStream().Write(in_memory_resource, 0, Size);
     Uri fullUri = PackUriHelper.Create(packUri, packPart.Uri);
     return fullUri;
}

скачать код примера

Программы

Remote Control - Программа для удаленного доступа к компьютеру.
ImageConverter - Программа для уменьшения фотографий.
AutoShutdown - Программа для автоматического выключения компьютера.
Work time counter - Простая программа для учета рабочего времени.
ClearFolders - Программа для массового удаления файлов.
SynchronizeFolders - Программа для синхронизации каталогов.
DiskSector - Утилита позволяет осуществлять чтение / запись секторов диска в / из файла.
ROPTest - Программа изображает все 256 вариантов флагов Ternary Raster Operations Codes, помогает определить необходимый код растровой операции.
HEX Dump ActiveX позволяет просматривать и редактировать данные в шестнадцатеричном HEX формате.
15 slide puzzle - 15 slide puzzle game.
BOOTSAVER - Позволяет скопировать загрузочный сектор жесткого диска в файл, восстановить загрузочный сектор из файла, восстановить загрузочную программу IPL1, не меняя таблицу разделов диска.
Генератор кроссвордов. Описание алгоритм компьютерного составления кроссвордов.
Симулятор 80196. Программный симулятор микроконтроллера Intel 80196KR. Имеет встроенный компилятор ассемблера, текстовый редактор, справочную систему. Может создавать HEX файлы.
Ассемблер. Оригинальный компилятор ассемблера х86.
DISKEDIT Программа позволяет просматривать и редактировать сектора дисков. Работает через прерывание INT13.

Программирование

WPF, XPS, NET. Как установить шрифт из памяти
Нейронные сети. Пример программы и исходный код С++.
Deflate. Подробное описание алгоритма декодирование формата Дефлет. Прмер декодирования с пояснениями.
Программирование драйверов для Windows. Общие вопросы программирования драйверов. Какими средствами пользоваться, где скачать DDK.
Программирование RS232 в Windows. СComBase класс для программирования COM порта.
Программирование потоков в Windows. Класс CBaseThread позволяет организовать несколько рабочих потоков.
Динамический Recordset CDynamicRecordSet - класс модернизирует CRecordSet для более удобной работы с БД из MFC приложений.
Как сохранить, восстановить, отредактировать MBR (Master Boot Record), boot sector, нулевой, загрузочный сектор диска при помощи утилиты debug.exe

evmsoft.net © 2014