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

Программирование WPF, XPS, NET. Как установить шрифт из памяти в NET FrameWork. Как внедрить в 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;
}

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

Ассемблер. Оригинальный компилятор ассемблера х86.
Симулятор 80196. Программный симулятор микроконтроллера Intel 80196KR. Имеет встроенный компилятор ассемблера, текстовый редактор, справочную систему. Может создавать HEX файлы.
Генератор кроссвордов. Описание алгоритм компьютерного составления кроссвордов.
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
Дачный водопровод

evm.narod.ru ©

Hosted by uCoz