예제 #1
0
        private void ReadCreateFontIndirect(BinaryReader wmfReader, uint recordSize)
        {
            var font = new LogFont();

            font.Height = EndianFlip(wmfReader.ReadInt16());
            font.Width = EndianFlip(wmfReader.ReadInt16());
            font.Escapement = EndianFlip(wmfReader.ReadInt16());
            font.Orientation = EndianFlip(wmfReader.ReadInt16());
            font.Weight = EndianFlip(wmfReader.ReadInt16());
            font.IsItalic = (wmfReader.ReadByte() == 0x01);
            font.IsUnderline = (wmfReader.ReadByte() == 0x01);
            font.IsStrikeout = (wmfReader.ReadByte() == 0x01);
            font.Charset = wmfReader.ReadByte();
            font.OutPrecision = wmfReader.ReadByte();
            font.ClipPrecision = wmfReader.ReadByte();
            font.Quality = wmfReader.ReadByte();
            var pitchAndFamily = wmfReader.ReadByte();
            font.FaceName = AsciiBytesToString(wmfReader.ReadBytes((int)(recordSize * 2) - 6 - 18));
            font.FaceName = font.FaceName.Replace("\0", "").Trim();

            // Split pitch and family
            font.Family = (FamilyFont)((pitchAndFamily & 0x01)
                       + (pitchAndFamily & 0x02)
                       + (pitchAndFamily & 0x03)
                       + (pitchAndFamily & 0x04));
            font.Pitch = (byte)((pitchAndFamily & 0x07)
                       + (pitchAndFamily & 0x08));

            _currentDC.CreateFontIndirect(font);
        }
예제 #2
0
 public void CreateFontIndirect(LogFont font)
 {
     _objectTable.AddObject(font);
 }