VB.net/C#'daki bağımsız uygulama [masaüstü uygulaması] için yerel dosya sisteminde yazı tipi kaydetmeden kaynak yazı tipi doğrudan nasıl kullanılır?Kaynak yazı tipini doğrudan VB.net/C# olarak kullanın.
cevap
, sen PrivateFontCollection.AddMemoryFont() yöntemini kullanmak gerekir. Örneğin, ben bir kaynak olarak bir yazı adlı dosyayı "test.ttf" eklendi ve şu şekilde kullanılır:
using System.Drawing.Text;
using System.Runtime.InteropServices;
...
public partial class Form1 : Form {
private static PrivateFontCollection myFonts;
private static IntPtr fontBuffer;
public Form1() {
InitializeComponent();
if (myFonts == null) {
myFonts = new PrivateFontCollection();
byte[] font = Properties.Resources.test;
fontBuffer = Marshal.AllocCoTaskMem(font.Length);
Marshal.Copy(font, 0, fontBuffer, font.Length);
myFonts.AddMemoryFont(fontBuffer, font.Length);
}
}
protected override void OnPaint(PaintEventArgs e) {
FontFamily fam = myFonts.Families[0];
using (Font fnt = new Font(fam, 16)) {
TextRenderer.DrawText(e.Graphics, "Private font", fnt, Point.Empty, Color.Black);
//e.Graphics.DrawString("Private font", fnt, Brushes.Black, 0, 0);
}
}
}
fontBuffer
değişken kasıtlı statik olduğuna dikkat etmeyin. AddMemoryFont() kullandığınızda bellek yönetimi zordur, fontun kullanılabildiği ve PrivateFontCollection öğesinin henüz kaldırılmadığı sürece belleğin geçerli kalması gerekir. Bu garantiye sahip değilseniz, Marshal.FreeCoTaskMem() öğesini çağırmamaya dikkat edin; bu, metin bozulmasını teşhis etmenin çok zor olmasına neden olan bir çok genel hatadır. Şanslı olduğunuzda sadece bir AccessViolationException alırsınız. Programın ömrü için geçerli tutmak basit bir çözümdür.
Mükemmel. Mesaj için teşekkürler. – Harsha
@HansPassant: Eğer eklemek istediğim yazı tipi dosyası, '.ttf' yerine '.bin' uzantısına sahip olsaydı. –
Bir şeyler yapmadan önce PInvoke kullanmam gerekiyordu. ['AddFontMemResourceEx'] işlevi (https://msdn.microsoft.com/en-us/library/windows/desktop/dd183325 (v = vs.85) .aspx) kullanılmalıdır ... belki de 'PrivateFontCollection' .AddMemoryFont() ', yazı tipinin sistem belleğinde olmasını bekler. Ayrıca, bunun bir metin kutusunun yazı tipini değiştirmek yerine yazı kutusunun yazı tipini değiştirdiğim bir şey olup olmadığını merak ediyorum. (Ancak 'PrivateFontCollection.AddFontFile()' kullanarak hala PInvoke fonksiyonu olmadan çalıştı). –
Uygulama ile birlikte Ambalaj yazı tiplerini anlatıyor musunuz? Eğer evetse. Şuna kontrol: mümkündür http://msdn.microsoft.com/en-us/library/ms753303.aspx
- 1. Yazı Tipini PDF olarak değiştir
- 2. JLabel yazı tipini değiştir
- 3. kullanın özel yazı tipleri
- 4. Simge yazı tipini CSS özelliğinde arka plan olarak ayarla
- 5. Yazı tipini değiştirdiğimde UIButton yeniden boyutlandırılıyor mu?
- 6. Textview: yazı tipini ebeveyne uydurmak için ayarlayın
- 7. Varsayılan font yazı tipini değiştirmeden yazı tipi adının değiştirilmesi
- 8. PyCharm, Quick Documentation penceresinin yazı tipini değiştirme
- 9. (PyQt) QTextEdit widget'ımın yazı tipini neden değiştiremiyorum?
- 10. Google Web Yazı Tiplerini ticari yerel Kakao uygulamalarında kullanın?
- 11. SWT Kabuğu için varsayılan yazı tipini ayarlama
- 12. Pango.FontDescription öğesinden GtkEntry yazı tipini ayarlama
- 13. Xcode kodu hangi yazı tipini kullanıyor
- 14. Matlab ekseninin yazı tipini değiştir işareti
- 15. Önceki aygıtlar için Roboto yazı tipini kullan
- 16. Radyo düğmesinin yanındaki yazı tipini değiştir?
- 17. CHOOSECOLOR iletişim kutusunda yazı tipini değiştirme
- 18. Yazı tipini Sistem Semibolduna program aracılığıyla değiştirme
- 19. Yeni "Hayır CAPTCHA reCAPTCHA" yazı tipini değiştirme
- 20. webview yazı tipini ayarlamak için nasıl
- 21. BarButtonItem Yazı Tipini Değiştirme Swift (Xcode 6)
- 22. Sublime yan çubuğundaki yazı tipini artırın
- 23. Calibri (Body) yazı tipini metne uygula
- 24. JTable'ın üstbilgisinin yazı tipini nasıl değiştirebilirim?
- 25. $ ile kaynak kodu ile birlikte kullanın Kaynak
- 26. kullanın alternatif yazı özgü karakteri
- 27. iOS 11 (veya Xcode 9) yazı tipini yükle
- 28. Wordpress özel yazı tipi bağlantıyı doğrudan düzenlemek için sayfa
- 29. Yalnızca geçerli karakterin belirli karakterleri yoksa özel yazı tipi kullanın
- 30. vba ile tablodaki belirli hücrelerin rengini ve yazı tipini değiştirme
@SamSol: CS.NET diye bir şey yoktur. Bunu nereden duydun? Dil sadece "C#". –