private void vAdjustFontSize(System.Drawing.Font fntFonte) { PS = new struct0E(); PS.QR = 212; System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(1, 1); System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp); float fUnit = (72000f / graph.DpiX); System.Drawing.Font fntUnit = new System.Drawing.Font(fntFonte.Name, fUnit, fntFonte.Style, System.Drawing.GraphicsUnit.Point); System.IntPtr ptr1 = graph.GetHdc(); System.IntPtr ptr2 = fntUnit.ToHfont(); System.IntPtr ptr3 = SelectObject(ptr1, ptr2); if (GetOutlineTextMetrics(ptr1, 212, ref PS) != 0) { ARIAL_W_ARRAY = new int[((uint)((PS.QS.Q5 - PS.QS.Q4) + 1))]; if (System.Environment.OSVersion.Platform >= PlatformID.Win32NT) { GetCharWidth32(ptr1, PS.QS.Q4, PS.QS.Q5, ARIAL_W_ARRAY); } else { System.Drawing.Size size1 = System.Drawing.Size.Empty; System.Text.StringBuilder strbMeasure = new System.Text.StringBuilder(); for (int num1 = 0; (num1 < ARIAL_W_ARRAY.Length); num1 += 1) { strbMeasure.Length = 0; strbMeasure.Append(((char)(PS.QS.Q4 + num1))); GetTextExtentPoint32(ptr1, strbMeasure.ToString(), 1, ref size1); ARIAL_W_ARRAY[num1] = size1.Width; } } } bool flag1 = ((PS.QW & 1) == 0); if (flag1) { int num2 = GetFontData(ptr1, 0, 0, null, 0); //this.PQ = new byte[((uint) num2)]; //GetFontData(ptr1, 0, 0, this.PQ, num2); //this.PR = new Y(this); } SelectObject(ptr1, ptr3); DeleteObject(ptr2); graph.ReleaseHdc(ptr1); fntUnit.Dispose(); graph.Dispose(); bmp.Dispose(); }
private static extern int GetOutlineTextMetrics(System.IntPtr ptr, int nInt, ref struct0E oe);