Inheritance: IDisposable
コード例 #1
0
ファイル: Renderer.cs プロジェクト: Icehunter/ffxivapp-hooker
 private DXFont GetFont(Font font)
 {
     DXFont result;
     var key = String.Format("{0}{1}{2}", font.Name, font.Size, font.Style);
     if (FontCache.TryGetValue(key, out result))
     {
         return result;
     }
     result = new DXFont(Device, DeviceContext);
     result.Initialize(font.Name, font.Size, font.Style, true);
     FontCache[key] = result;
     return result;
 }
コード例 #2
0
ファイル: Renderer.cs プロジェクト: Icehunter/ffxivapp-hooker
 private DXFont GetFontForTextElement(TextElement element)
 {
     DXFont result;
     var key = String.Format("{0}{1}{2}", element.Font.Name, element.Font.Size, element.Font.Style);
     if (FontCache.TryGetValue(key, out result))
     {
         return result;
     }
     result = new DXFont(Device, DeviceContext);
     result.Initialize(element.Font.Name, element.Font.Size, element.Font.Style, element.AntiAliased);
     FontCache[key] = result;
     return result;
 }
コード例 #3
0
        public void DrawString(int X, int Y, string text, int R, int G, int B, int A, DXFont F)
        {
            var blendFactor = new Color4(1.0f);
            Color4 backupBlendFactor;
            int backupMask;
            var backupBlendState = _deviceContext.OutputMerger.GetBlendState(out backupBlendFactor, out backupMask);
            _deviceContext.OutputMerger.SetBlendState(_transparentBS, blendFactor);

            BeginBatch(F.GetFontSheetSRV());

            var length = text.Length;

            var posX = X;
            var posY = Y;

            var vec = new Vector4(R > 0 ? (float) (R / 255.0f) : 0.0f, G > 0 ? (float) (G / 255.0f) : 0.0f, B > 0 ? (float) (B / 255.0f) : 0.0f, A > 0 ? (float) (A / 255.0f) : 0.0f);
            var color = new Color4(vec);

            for (var i = 0; i < length; ++i)
            {
                var character = text[i];

                switch (character)
                {
                    case ' ':
                        posX += F.GetSpaceWidth();
                        break;
                    case '\n':
                        posX = X;
                        posY += F.GetCharHeight();
                        break;
                    default:
                        var charRect = F.GetCharRect(character);

                        var width = charRect.Right - charRect.Left;
                        var height = charRect.Bottom - charRect.Top;

                        Draw(new Rectangle(posX, posY, posX + width, posY + height), charRect, color);

                        posX += width + 1;
                        break;
                }
            }

            EndBatch();
            _deviceContext.OutputMerger.SetBlendState(backupBlendState, backupBlendFactor, backupMask);
        }