示例#1
0
        private void RenderTextNode(TextNode textNode, GwenRenderContext grc)
        {
            if (string.IsNullOrEmpty(textNode.Text))
            {
                return;
            }

            // 当需要的时候,先更新 TextNode 的尺寸
            Point textSize = grc.Renderer.MeasureText(grc.Font, textNode.Text);

            if (textNode.RequestedSizeRefreshing)
            {
                textNode.Size = new Size(
                    Math.Max(textNode.Size.Width, textSize.X),
                    Math.Max(textNode.Size.Height, textSize.Y));
                NodeSGUtil.ClampBounds(textNode);
                textNode.RequestedSizeRefreshing = false;
            }

            Point loc = grc.GetAccumulatedDockedScrolledTranslate();

            // 理论上这里我们不应当每帧对每段 Text 都调用 MeasureText()
            // 不过考察 Gwen.Renderer.Tao.MeasureText() 后我们发现
            // 其内部已经 Cache 了一份,把尺寸再缓存一份意义不大
            Point internalOffset = TextNodeUtil.CalculateInternalTextOffset(textNode, textSize);

            loc.Offset(internalOffset);

            Color c = grc.Renderer.DrawColor;

            grc.Renderer.DrawColor = textNode.TextColor;
            grc.Renderer.RenderText(grc.Font, loc, textNode.Text);
            grc.Renderer.DrawColor = c;
        }
示例#2
0
        private void RenderCheckBox(CheckBox cb, GwenRenderContext grc)
        {
            Rectangle rect = new Rectangle(grc.GetAccumulatedDockedScrolledTranslate(), cb.MarkSize);

            DrawImage(grc, rect, cb.Res_Background);
            DrawImage(grc, rect, cb.Res_Mark);
        }
示例#3
0
        private void RenderGrid(Grid g, GwenRenderContext grc)
        {
            Rectangle rect = new Rectangle(grc.GetAccumulatedDockedTranslate(), g.Size);

            grc.Renderer.DrawLinedRect(rect);

            Point loc = grc.GetAccumulatedDockedScrolledTranslate();

            for (int i = 0; i < g.RowCount; i++)
            {
                for (int k = 0; k < g.ColumnCount; k++)
                {
                    Rectangle cellRect = new Rectangle();
                    cellRect.X      = loc.X + i * (g.CellSize.Width + g.CellPadding.Width);
                    cellRect.Y      = loc.Y + k * (g.CellSize.Height + g.CellPadding.Height);
                    cellRect.Width  = g.CellSize.Width;
                    cellRect.Height = g.CellSize.Height;
                    grc.Renderer.DrawLinedRect(cellRect);
                }
            }
        }
示例#4
0
 private void RenderImageNode(ImageNode imageNode, GwenRenderContext grc)
 {
     DrawImage(grc, new Rectangle(grc.GetAccumulatedDockedScrolledTranslate(), imageNode.Size), imageNode.Res);
 }
示例#5
0
        private void RenderProgressBar(ProgressBar pb, GwenRenderContext grc)
        {
            Rectangle rect = new Rectangle(grc.GetAccumulatedDockedScrolledTranslate(), pb.Size);

            DrawImage(grc, rect, pb.Res_Progress);
        }
示例#6
0
 private void RenderButton(Button bt, GwenRenderContext grc)
 {
     DrawImage(grc, new Rectangle(grc.GetAccumulatedDockedScrolledTranslate(), bt.Size), bt.Res_Current);
 }