public override void prerender()
        {
            if (str.Length == 0)
            {
                return;
            }
            if (currentFont == null)
            {
                currentFont = new XNAFont();
            }
            int off = uirCache.IndexOf(this);
            if (off > -1)
            {
                uir = uirCache[off].uir;
                uirCache.RemoveAt(off);
                uirCache.Insert(0, this);
                return;
            }
            SilverlightImplementation.textBlockInstance.Text = str;
            SilverlightImplementation.textBlockInstance.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(col.A, col.R, col.G, col.B));
            currentFont.applyFont(SilverlightImplementation.textBlockInstance);
            SilverlightImplementation.textBlockInstance.Measure(new Size(10000, 10000));
            int dw = (int)SilverlightImplementation.textBlockInstance.DesiredSize.Width;
            int dh = (int)SilverlightImplementation.textBlockInstance.DesiredSize.Height;

            uir = new UIElementRenderer(SilverlightImplementation.textBlockInstance, dw, dh);
            uir.Render();
            uirCache.Insert(0, this);
            if (uirCache.Count > 50)
            {
                uirCache[50].uir.Dispose();
                uirCache.RemoveAt(50);
            }
        }
 public override global::System.Object createFont(int face, int style, int size)
 {
     XNAFont x = new XNAFont();
     x.face = face;
     x.style = style;
     x.size = size;
     return x;
 }
 public DrawString(int x, int y, String str, Color col, XNAFont currentFont, int alpha)
 {
     this.x = x;
     this.y = y;
     this.str = str;
     this.col = new Color(col.R, col.G, col.B, alpha);
     this.currentFont = currentFont;
 }