测量具有不同字体的字符串AccessViolationException未处理

时间:2012-06-15 20:03:42

标签: c# string fonts measure

在我的自定义标签类的以下属性中,设置Font时,它会找到显示文本的新长度,并相应地更改标签的大小。

    /// <summary>
    /// Font of Text Displayed
    /// </summary>
    public Font Font
    {
        get
        {
            return _font;
        }
        set
        {
            _font = value;
            using (Graphics g = _parent.CreateGraphics())
            {
                SizeF soize = g.MeasureString(_text, _font);
                _size = new Size((int)soize.Width, (int)soize.Height);
                _width = _size.Width;
                _height = _size.Height;
            }

然而就行了

SizeF soize = g.MeasureString(_text, _font);

我收到此错误:System.AccessViolationException {“尝试读取或写入受保护的内存。这通常表示其他内存已损坏。”}

仅当我将字体更改为嵌入的自定义字体时才会出现这种情况。通常对于我的自定义标签的大多数实例,即使以相同的方式使用相同的字体,也不会引发错误。它有时似乎没有抛出错误,但我不知道为什么它有时决定工作,有时候,不是。

有谁知道我能做什么?

1 个答案:

答案 0 :(得分:1)

随机GDI +相关的AccessViolationExceptions似乎通常是由视频驱动程序引起的。我会尝试两件事:

  1. 更新您的驱动程序
  2. 在具有不同制造商视频卡的计算机上尝试此操作(例如,如果您有Nvidia,请尝试ATI,反之亦然)。