private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
GraphicsPath myPath = new GraphicsPath();
string stringText = "Sample Text";
FontFamily family = new FontFamily("Arial");
int fontStyle = (int)FontStyle.Regular;
int emSize =30;
Point origin = new Point(20, 20);
StringFormat format = StringFormat.GenericDefault;
myPath.AddString(stringText,family, fontStyle,emSize,
origin, format);
// #0
e.Graphics.FillPath(Brushes.Red, myPath);
e.Graphics.DrawPath(Pens.Blue, myPath);
// #1
Font f=new Font(family, emSize);
e.Graphics.DrawString(stringText, f ,Brushes.Black, new Point(20, 20), format);
}
Может быть кто-нибудь подскажет, почему код #0 и #1 рисуют разные вещи и как бы так сделать, чтоб рисовало одинаково?
Причем, если строку
Font f=new Font(family, emSize);
заменить на
Font f=new Font(family, emSize,GraphicsUnit.Pixel);
получается почти то, что надо, но все равно не то
Здравствуйте, Atilla, Вы писали:
A>получается почти то, что надо, но все равно не то
В Петцольде написано, что это сделать нельзя. Нельзя получить одинаковое изображение при выводе шрифта через DrawString и через контур, т.к. используются разные алгоритмы.