Beispiel #1
0
        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();
        }
Beispiel #2
0
 private static extern int GetOutlineTextMetrics(System.IntPtr ptr, int nInt, ref struct0E oe);