当前位置: 首页>>代码示例>>C#>>正文


C# Surface.DrawRectangle方法代码示例

本文整理汇总了C#中Surface.DrawRectangle方法的典型用法代码示例。如果您正苦于以下问题:C# Surface.DrawRectangle方法的具体用法?C# Surface.DrawRectangle怎么用?C# Surface.DrawRectangle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Surface的用法示例。


在下文中一共展示了Surface.DrawRectangle方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ComposeContent

        /// <summary>
        /// Composes the element content.
        /// </summary>
        /// <param name="surface">The composition surface.</param>
        protected override void ComposeContent(Surface surface)
        {
            var color = this.BorderColor;
            var border = this.BorderThickness;
            var outer = this.Bounds;
            var inner = outer - border;

            surface.DrawRectangle(this.Background, null, inner);
            surface.DrawRectangle(color, null, new RectangleF(outer.Left, outer.Top, outer.Width, border.Top));
            surface.DrawRectangle(color, null, new RectangleF(outer.Left, outer.Bottom - border.Bottom, outer.Width, border.Bottom));
            surface.DrawRectangle(color, null, new RectangleF(outer.Left, outer.Top + border.Top, border.Left, outer.Height - border.Top - border.Bottom));
            surface.DrawRectangle(color, null, new RectangleF(outer.Right - border.Right, outer.Top + border.Top, border.Right, outer.Height - border.Top - border.Bottom));

            if (this.ClipToBounds)
            {
                surface.PushClip(inner);
                try
                {
                    base.ComposeContent(surface);
                }
                finally
                {
                    surface.PopClip();
                }
            }
            else
            {
                base.ComposeContent(surface);
            }
        }
开发者ID:vetuomia,项目名称:rocket,代码行数:34,代码来源:Border.cs

示例2: ComposeContent

        /// <summary>
        /// Composes the element content.
        /// </summary>
        /// <param name="surface">The composition surface.</param>
        protected override void ComposeContent(Surface surface)
        {
            base.ComposeContent(surface);

            var bounds = this.Bounds;
            var color = this.ScrollBarColor;
            var width = Math.Max(1, this.ScrollBarWidth);

            if (this.ContentWidth > bounds.Width && this.HorizontalScroll == Scroll.Enabled)
            {
                var s = bounds.Width / this.ContentWidth;
                surface.DrawRectangle(color, null, new RectangleF(bounds.X + this.HorizontalScrollPosition * s, bounds.Bottom - width, bounds.Width * s - width, width));
            }

            if (this.ContentHeight > bounds.Height && this.VerticalScroll == Scroll.Enabled)
            {
                var s = bounds.Height / this.ContentHeight;
                surface.DrawRectangle(color, null, new RectangleF(bounds.Right - width, bounds.Y + this.VerticalScrollPosition * s, width, bounds.Height * s));
            }
        }
开发者ID:vetuomia,项目名称:rocket,代码行数:24,代码来源:ScrollViewer.cs

示例3: ComposeContent

        /// <summary>
        /// Composes the element content.
        /// </summary>
        /// <param name="surface">The composition surface.</param>
        protected override void ComposeContent(Surface surface)
        {
            var font = this.Font;
            var text = this.Text;
            var color = this.Foreground;

            if (text != null && font != null && color.A > 0)
            {
                if (font.IsInitialized())
                {
                    var bounds = this.Bounds;
                    var lineSpacing = this.LineSpacing;
                    var charSpacing = this.LetterSpacing;
                    var baselineOffset = this.BaselineOffset;

                    var baseX = bounds.X;
                    var baseY = bounds.Y;

                    var x = 0f;
                    var y = 0f;

                    switch (this.VerticalAlignment)
                    {
                        case VerticalAlignment.Top:
                            y = font.Top - font.LineHeight;
                            break;

                        case VerticalAlignment.Bottom:
                            if (float.IsNaN(baselineOffset))
                            {
                                y = font.Bottom;
                            }
                            else
                            {
                                y = font.Baseline - baselineOffset;
                            }
                            break;
                    }

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

                        if (character < 32)
                        {
                            switch (character)
                            {
                                case '\n':
                                    x = 0f;
                                    y += font.LineHeight + lineSpacing;
                                    break;
                            }
                        }
                        else
                        {
                            if (x > 0)
                            {
                                x += charSpacing;
                            }

                            var glyph = font.GetGlyph(character);
                            var width = glyph.Width;

                            surface.DrawRectangle(color, glyph, new RectangleF(baseX + x, baseY + y, glyph.Width, glyph.Height));

                            if (i + 1 < text.Length)
                            {
                                width += glyph.GetKerning(text[i + 1]);
                            }

                            x += width;
                        }
                    }
                }
                else
                {
                    this.InvalidateWhenReady(font);
                }
            }
        }
开发者ID:vetuomia,项目名称:rocket,代码行数:84,代码来源:TextBlock.cs


注:本文中的Surface.DrawRectangle方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。