Удаление Шрифтов кажется мне немного странным.Например, если у меня есть элемент управления меткой и я использую используемый шрифт, например, label1.Font.Dispose();
, он все равно хорошо прорисовывается.
Если я вместо этого попытаюсь использовать удаленный шрифт сразу же, он потерпит неудачу, например,
var f = new Font("Arial", 14);
f.Dispose();
g.DrawString("Hello", f, Brushes.Black, 20, 20);
за исключением Invalid parameter
.
Последнее мне кажется более интуитивным, учитывая, что я пытаюсь использовать удаленный шрифт.
Я не могу понять, почему этикетка по-прежнему хорошо отрисовывается, потому чтов справочном источнике метки я вижу, что шрифт используется сразу же без какой-либо проверки: e.Graphics.DrawString(Text, Font, brush, face, stringFormat);
.
Исходный вопрос заключается в том, что у меня есть пользовательский элемент управлениякоторый, как и другие элементы управления, использует шрифты в качестве свойств и реализует IDisposable
.Теперь я задаюсь вопросом, должен ли я избавиться от свойств шрифта, потому что я не могу знать, например, было ли установлено свойство шрифта для шрифта, который все еще необходим.
Control
, кажется, использует некоторые FontHandleWrapper
класс внутри, что я не совсем понимаю, если честно. Но даже если я извлекаю шрифт из своего пользовательского элемента управления (который у меня есть во внешней библиотеке) извне, он все равно прекрасно рисует, и я немедленно использую шрифты там.
Может кто-нибудьобъясните, почему я могу распоряжаться одним шрифтом, а не другим?Стоит ли оставлять шрифты в покое в методе Dispose моего пользовательского элемента управления или утилизировать их?