2016-05-02 74 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

回答