Bir CButton'u içindeki metnin genişliğine dinamik olarak yeniden boyutlandırmak istiyorum. MFC'de bunu yapmak için yerleşik bir yol var mı, yoksa belirli bir metnin piksel genişliğini hesaplamak için bir yol var mı (böylece CWnd::SetWindowPos
'u kullanabilirim)?Metin genişliğini MFC olarak alın
5
A
cevap
6
Belirli bir yazı tipindeki metnin genişliğini hesaplamak için CDC::GetTextExtent'u kullanabilirsiniz. Metni görüntüleyen denetimden Aygıt Bağlamı almak için CWnd::GetDC kullanın.
6
Sıkıcı. Kullanmakta olduğu yazı tipini almak için düğmede CWnd::GetFont()
kullanmanız ve ardından bu yazı tipini seçmiş olduğunuz nesnesindeki standart GetTextText
kullanın. O @ demoncodemonkey cevabı ek olarak
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
4
gibi görünür, sen DT_CALCRECT
bayrağıyla CDC::DrawText çağırabilir. Bu şekilde metin çizilmeyecek, ancak işleve ilettiğiniz CRect, çizilecek metnin genişliğine ve yüksekliğine sahip olacaktır.
Bu özellikle satır sonları ile metin çizmek istiyorsanız (DT_WORDBREAK
bayrağını kullanarak) yararlıdır. CDC::GetTextExtent
kullanarak bunu yapamazsınız.
1
CClientDC hdc(this);
GetRect.SetRect(0,0,iLabelWidth,0);
//
//To get Height of Lable in advance
//
hdc.DrawText(
TempData,
TempData.GetLength(),
GetRect,
DT_CALCRECT | DT_MODIFYSTRING | DT_WORDBREAK
);
İlgili konular
- 1. Terminal genişliğini alın Haskell
- 2. DialogFragment - İletişim genişliğini alın
- 3. Android bildirim paneli genişliğini alın
- 4. Metin kutusunun genişliğini kilitleme
- 5. Metin bloğunun genişliğini otomatik yapın
- 6. MFC
- 7. MFC
- 8. jQuery: her öğenin genişliğini alın ve özetleyin
- 9. Angular2 pencere genişliğini alın. Yeniden boyutlandır
- 10. PHP GD ile Metin Genişliğini Hesaplama
- 11. GetElementsByClassName içinde metin alın
- 12. Metin Bloğu Alın
- 13. MFC Penceresine bitmapler olarak video karelerini çizin
- 14. görüntülemeden önce SVG'de metin genişliğini alma
- 15. VisualBrush içindeki bir metin kutusunun genişliğini bağlama
- 16. Reklam genişliğini match_parent olarak ayarlama
- 17. MFC, panoya metin atmanın hızlı bir yolunu sunuyor mu?
- 18. C# WinForms - Akıllı Metin Kutusu Denetimi Metin Kutusu genişliğini temel alan Yol uzunluğunu otomatik olarak biçimlendirme
- 19. Çalışma zamanında düzen yüksekliğini ve genişliğini alın android
- 20. Tek bir karakterin genişliğini php'deki ttf-font'tan alın.
- 21. Struts2 Etiket tek bir fieldError al sadece metin olarak alın
- 22. C++ MFC C++ MFC uygulamasında Alfa şeffaf Dikdörtgen
- 23. sqlite'den tür sayısı değerleri alın - metin alınıyor
- 24. Hata C1189 MFC
- 25. MFC Penceresinin Boyutlandırılması
- 26. mfc kullanarak dinamik menü
- 27. MFC: GetCurrentDirectory işlevi
- 28. Ebeveyn genişliğini bağımsız olarak birbirinin yanına yerleştirin
- 29. Alt düzen genişliğini programatik olarak ayarlayın ANDROID'de?
- 30. CSS Textarea genişliğini% 100 olarak ayarlama
'GetTextExtent 've' DrawText' arasında bir performans farkı var mı? – Richard