Exemplo n.º 1
0
        private void DrawChar(DrawingContext drawingContext, float x, float y, Rect charSourceRect, ColorMultiplier multiplier)
        {
            ImageBrush imageBrush = new ImageBrush(fontSource)
            {
                Viewbox      = charSourceRect,
                ViewboxUnits = BrushMappingMode.Absolute
            };

            if (multiplier.r == 1.0f &&
                multiplier.g == 1.0f &&
                multiplier.b == 1.0f)
            {
                drawingContext.DrawRectangle(imageBrush, null, new Rect(x, y, charSourceRect.Width, charSourceRect.Height));
            }
            else
            {
                drawingContext.PushOpacityMask(imageBrush);
                SolidColorBrush colorBrush = new SolidColorBrush(
                    Color.FromRgb(
                        (byte)(multiplier.r * 255),
                        (byte)(multiplier.g * 255),
                        (byte)(multiplier.b * 255)));
                drawingContext.DrawRectangle(colorBrush, null, new Rect(x, y, charSourceRect.Width, charSourceRect.Height));
                drawingContext.Pop();
            }
        }
Exemplo n.º 2
0
 protected override void RenderElementUntransformed(DrawingContext drawingContext, ColorMultiplier multiplier, bool isTop)
 {
     base.RenderElementUntransformed(drawingContext, multiplier, isTop);
     if (!CurrentVisibility && !isTop)
     {
         return;
     }
     multiplier.Scale(textBox.TextRed / 255.0f, textBox.TextGreen / 255.0f, textBox.TextBlue / 255.0f);
     font.DrawByteArray(
         textBox.TextBuffer,
         textBox.Width,
         textBox.Height,
         new TextBoxAttributes()
     {
         xAlign    = textBox.XAlignment,
         yAlign    = textBox.YAlignment,
         multiline = textBox.Multiline,
         wordWrap  = textBox.WordWrap
     },
         (outX, outY, x, y, width, height) => DrawChar(drawingContext, outX, outY, new Rect(x, y, width, height), multiplier));
 }
Exemplo n.º 3
0
 public void RenderElement(DrawingContext drawingContext) => RenderElement(drawingContext, ColorMultiplier.One(), true);
Exemplo n.º 4
0
 internal abstract void RenderElement(DrawingContext drawingContext, ColorMultiplier multiplier, bool isTop);
 protected override void RenderElementUntransformed(DrawingContext drawingContext, ColorMultiplier multiplier, bool forceVisible)
 {
     if (!CurrentVisibility && !forceVisible && VisibilityClock == null)
         return;
     if (SpriteClocks == null)
     {
         foreach (UIElementModel child in Children)
         {
             child.RenderElement(drawingContext, multiplier, false);
         }
     }
     else
     {
         int index = 0;
         foreach (UIElementModel child in Children)
         {
             if (!(child is UISpriteGroupModel groupModel))
                 continue;
             if (!groupModel.IsSpriteCollectionChild)
                 continue;
             drawingContext.PushOpacity(child.CurrentVisibility ? 1 : 0, SpriteClocks[index]);
             child.RenderElement(drawingContext, multiplier, true);
             drawingContext.Pop();
             index++;
         }
     }
 }