public static void DrawText(System.Drawing.Graphics graphics, string text, System.Drawing.Font font, System.Drawing.Color foreColor, System.Drawing.Color backColor, System.Drawing.Rectangle bounds, Skybound.Windows.Forms.TextFormatFlags formatFlags) { if ((text == null) || (text.Length == 0) || (graphics == null) || (font == null) || bounds.Size == System.Drawing.Size.Empty || foreColor.Equals(System.Drawing.Color.Empty) || foreColor.Equals(System.Drawing.Color.Transparent)) { return; } System.IntPtr intPtr1 = graphics.GetHdc(); try { System.IntPtr intPtr2 = Skybound.Windows.Forms.TextRenderer.GetCachedFont(font); System.IntPtr intPtr3 = Skybound.Windows.Forms.TextRenderer.SelectObject(intPtr1, intPtr2); if (backColor.Equals(System.Drawing.Color.Empty) || backColor.Equals(System.Drawing.Color.Transparent)) { Skybound.Windows.Forms.TextRenderer.SetBkMode(intPtr1, 1); } else { Skybound.Windows.Forms.TextRenderer.SetBkMode(intPtr1, 2); Skybound.Windows.Forms.TextRenderer.SetBkColor(intPtr1, System.Drawing.ColorTranslator.ToWin32(backColor)); } int i = Skybound.Windows.Forms.TextRenderer.GetTextColor(intPtr1); Skybound.Windows.Forms.TextRenderer.SetTextColor(intPtr1, System.Drawing.ColorTranslator.ToWin32(foreColor)); Skybound.Windows.Forms.TextRenderer.RECT rect = new Skybound.Windows.Forms.TextRenderer.RECT(bounds); Skybound.Windows.Forms.TextRenderer.DrawText(intPtr1, text, text.Length, ref rect, (int)formatFlags); Skybound.Windows.Forms.TextRenderer.SetTextColor(intPtr1, i); Skybound.Windows.Forms.TextRenderer.SelectObject(intPtr1, intPtr3); } finally { graphics.ReleaseHdc(intPtr1); } }
public static System.Drawing.Size MeasureText(string text, System.Drawing.Font font, System.Drawing.Size extent, Skybound.Windows.Forms.TextFormatFlags formatFlags) { if ((text == null) || (text.Length == 0) || (font == null)) { return(System.Drawing.Size.Empty); } if (extent == System.Drawing.Size.Empty) { extent = new System.Drawing.Size(32767, 0); } System.IntPtr intPtr1 = Skybound.Windows.Forms.TextRenderer.GetCachedFont(font); System.IntPtr intPtr2 = Skybound.Windows.Forms.TextRenderer.SelectObject(Skybound.Windows.Forms.TextRenderer.MeasureHdc, intPtr1); Skybound.Windows.Forms.TextRenderer.RECT rect = new Skybound.Windows.Forms.TextRenderer.RECT(new System.Drawing.Rectangle(0, 0, extent.Width, extent.Height)); Skybound.Windows.Forms.TextRenderer.DrawText(Skybound.Windows.Forms.TextRenderer.MeasureHdc, text, text.Length, ref rect, (int)formatFlags | 1024); Skybound.Windows.Forms.TextRenderer.SelectObject(Skybound.Windows.Forms.TextRenderer.MeasureHdc, intPtr2); return(new System.Drawing.Size(rect.Right - rect.Left, rect.Bottom - rect.Top)); }