2016-05-02 84 views
0

我试图从内存(嵌入式资源)添加字体,并将其用于我的Windows窗体(C++/cli)应用程序...代码正在工作,但是当计算机上未安装指定的字体时,文本框将使用默认字体而不是我的自定义字体。 CompatibleTextRenderingDefault设置为true。系统::绘图::文本:: PrivateFontCollection不工作时,字体未安装

System::Drawing::Text::PrivateFontCollection^ privateFont = gcnew System::Drawing::Text::PrivateFontCollection(); 

    IO::Stream^ fontStream = Reflection::Assembly::GetExecutingAssembly()->GetManifestResourceStream("textfont.otf"); 
    array<Byte>^ fontData = gcnew array<Byte>(fontStream->Length); 
    fontStream->Read(fontData, 0, (int)fontStream->Length); 
    fontStream->Close(); 

    pin_ptr<byte> fontAddress = &fontData[0]; 
    privateFont->AddMemoryFont((IntPtr)fontAddress, fontData->Length); 

    this->TextBox_Username->Font = gcnew System::Drawing::Font(safe_cast<System::Drawing::FontFamily^>(privateFont->Families[0]), 9.749999F, System::Drawing::FontStyle::Bold); 
    this->TextBox_Password->Font = gcnew System::Drawing::Font(safe_cast<System::Drawing::FontFamily^>(privateFont->Families[0]), 9.749999F, System::Drawing::FontStyle::Bold); 
+0

你会期望发生什么?操作系统不知道字体,所以它使用默认系统作为后备。 – Igor

+0

@Igor感谢您的快速回复。有什么方法可以从资源中加载字体并在不安装的情况下使用它? – SylenZ

+0

你使用Qt吗?我不知道该怎么做。 – Igor

回答