我想创建一个listView,显示用户聊天程序的昵称。为此,我创建了一个继承自listViewItem的新类。
我想要做的是,取决于昵称比例的长度我的字体大小。 我已经阅读了很多关于缩放的文章,但所有依赖于图形对象,我不知道如何获得其中一个???我尝试了一个标签,它会来自paint事件但listView没有这样的事件?那我该如何缩放这个字体?
问:
如何获得昵称适合指定矩形的正确字体大小?
编辑:忘了说我对任何有grafic东西的东西都不熟悉我只使用了Designer并设置了一些属性。
答案 0 :(得分:1)
您应该将OwnerDraw
的{{1}}属性设置为ListView
,像这样添加绘图项事件处理程序:
true
这是一个简单的实现你想要的东西,所以你可以玩和调整它:
listView1.DrawItem += listView1_DrawItem;
您会发现需要更改字体大小并测量要显示的字符串,以便它完全适合单元格。假设如果您当前的字体大小不合适,则希望将其缩小。
答案 1 :(得分:0)
我标记@Nikola的答案是正确的,因为它解释了很多,但在我的情况下,我需要更简单的方式,并感谢@TaW我也遇到了问题,图形解决了我的代码片段
public static Font getNewFont(Font origFont, string text, float maxWidth, Graphics g)
{
float emSize = origFont.Size;
Font font = origFont;
while (g.MeasureString(text, font).Width > maxWidth)
{
emSize--;
font = new Font(origFont.FontFamily, emSize);
}
return font;
}