Я использую класс .NETCF (Windows Mobile) Graphics
и метод DrawString()
для отображения одного символа на экране.
Проблема в том, что я не могу правильно отцентрировать его. Независимо от того, что я установил для координаты Y местоположения рендеринга строки, она всегда оказывается ниже, чем больше, и чем больше размер текста, тем больше смещение Y.
Например, при размере текста 12 смещение составляет около 4, а при 32 смещение составляет около 10.
Я хочу, чтобы персонаж занимал по вертикали большую часть прямоугольника, в котором он нарисован, и центрировался по горизонтали. Вот мой основной код. this
ссылается на пользовательский элемент управления, в котором он рисуется.
Graphics g = this.CreateGraphics();
float padx = ((float)this.Size.Width) * (0.05F);
float pady = ((float)this.Size.Height) * (0.05F);
float width = ((float)this.Size.Width) - 2 * padx;
float height = ((float)this.Size.Height) - 2 * pady;
float emSize = height;
g.DrawString(letter, new Font(FontFamily.GenericSansSerif, emSize, FontStyle.Regular),
new SolidBrush(Color.Black), padx, pady);
Да, я знаю, что есть элемент управления меткой, который я мог бы использовать вместо этого и установить с ним центрирование, но мне действительно нужно сделать это вручную с классом Graphics
.