在Xamarin.Forms
中,使用Fontello字体中的字形非常简单:
1.下载字体,例如smiley.ttf。
1.以Embedded Resource
的形式添加到项目
1.导出字体:[assembly: ExportFont("smiley.ttf", Alias = "smiley")]
1.将xaml
中的标志符号用于Text
属性:
<StackLayout BackgroundColor="#eeeeee">
<!--Uses glyph #E800 from smiley.ttf-->
<Button BorderColor="Aqua"
BackgroundColor="Yellow"
BorderWidth="5"
CornerRadius="10"
FontSize="150"
FontFamily="smiley"
Text=""
TextColor="Black"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
HeightRequest="200"
WidthRequest="200" />
</StackLayout>
然后一眨眼的功夫:
我想在Winforms
中做同样的事情。下面是我尝试的:
public MainForm()
{
InitializeComponent();
// For the sake of simplicity, the TTF is copied to output directory...
var path = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Fonts", "smiley.ttf");
// ... and loaded here.
privateFontCollection.AddFontFile(path);
var fontFamily = privateFontCollection.Families[0];
Debug.Assert(fontFamily.Name == "smiley", "Expecting 'smiley' is the font family name");
button1.Font = new Font(fontFamily, 12F);
button1.UseCompatibleTextRendering = true;
// Shows 'A'
// button1.Text = "A";
// Shows nothing.
button1.Text = "\u0E00";
}
PrivateFontCollection privateFontCollection = new PrivateFontCollection();
这样的事情甚至可能吗?我尝试了button1.UseCompatibleTextRendering = true
和Application.SetCompatibleTextRenderingDefault(true)
的各种设置都没有成功。
1条答案
按热度按时间von4xj4u1#
问题的答案是:Fontello glyph可以像Xamarin Forms按钮一样用于Winforms按钮吗?为是。
感谢Jimi指出我的错字,也感谢他提到我也不知道处理的必要性。
下面是工作代码: