Dotted Path : Stroke « Windows Presentation Foundation « C# / CSharp Tutorial






<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:MyNameSpace.TextGeometryDemo" 
        Title="TextGeometry Demo">
    <Window.Resources>
        <src:TextGeometry x:Key="txtHollow" Text="Hollow"
                          FontFamily="Times New Roman" 
                          FontSize="192" FontWeight="Bold" />
        
        <src:TextGeometry x:Key="txtShadow" Text="Shadow"
                          FontFamily="Times New Roman"
                          FontSize="192" FontWeight="Bold" />
    </Window.Resources>

    <TabControl>
        <TabItem Header="Dotted">
            <Path Stroke="Blue" StrokeThickness="5"
                  StrokeDashArray="{Binding Source={x:Static DashStyles.Dot},Path=Dashes}"
                  StrokeDashCap="Round"
                  Data="{Binding Source={StaticResource txtHollow},Path=Geometry}" />
        </TabItem>


    </TabControl>
</Window>
//File:Window.xaml.cs
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Media;

namespace MyNameSpace.TextGeometryDemo
{
    public class TextGeometry
    {
        string txt = "";
        FontFamily fntfam = new FontFamily();
        FontStyle fntstyle = FontStyles.Normal;
        FontWeight fntwt = FontWeights.Normal;
        FontStretch fntstr = FontStretches.Normal;
        double emsize = 24;
        Point ptOrigin = new Point(0, 0);

        public string Text
        {
            set { txt = value; }
            get { return txt; }
        }
        public FontFamily FontFamily
        {
            set { fntfam = value; }
            get { return fntfam; }
        }
        public FontStyle FontStyle
        {
            set { fntstyle = value; }
            get { return fntstyle; }
        }
        public FontWeight FontWeight
        {
            set { fntwt = value; }
            get { return fntwt; }
        }
        public FontStretch FontStretch
        {
            set { fntstr = value; }
            get { return fntstr; }
        }
        public double FontSize
        {
            set { emsize = value; }
            get { return emsize; }
        }
        public Point Origin
        {
            set { ptOrigin = value; }
            get { return ptOrigin; }
        }

        public Geometry Geometry
        {
            get
            {
                FormattedText formtxt = new FormattedText(Text, CultureInfo.CurrentCulture, 
                                      FlowDirection.LeftToRight,
                                      new Typeface(FontFamily, FontStyle,FontWeight, FontStretch), 
                                      FontSize, Brushes.Black);

                return formtxt.BuildGeometry(Origin);
            }
        }

        public PathGeometry PathGeometry
        {
            get
            {
                return PathGeometry.CreateFromGeometry(Geometry);
            }
        }

    }
}
WPF Dotted Path








24.83.Stroke
24.83.1.StrokeDashArray 4,2 / StrokeDashOffset: 0StrokeDashArray 4,2 / StrokeDashOffset: 0
24.83.2.StrokeDashArray>: 4,2 /StrokeDashOffset: 1StrokeDashArray>: 4,2 /StrokeDashOffset: 1
24.83.3.StrokeDashArray: 4,2 /StrokeDashOffset: 2StrokeDashArray: 4,2 /StrokeDashOffset: 2
24.83.4.StrokeDashArray: 4,1,4,3 /StrokeDashOffset: 1StrokeDashArray: 4,1,4,3 /StrokeDashOffset: 1
24.83.5.StrokeDashArray: 1,4,1,2 / StrokeDashOffset: 1StrokeDashArray: 1,4,1,2 / StrokeDashOffset: 1
24.83.6.StrokeDashArray: 1 / StrokeDashOffset: 1StrokeDashArray: 1 / StrokeDashOffset: 1
24.83.7.PenLineJoin.BevelPenLineJoin.Bevel
24.83.8.PenLineJoin.RoundPenLineJoin.Round
24.83.9.PenLineJoin.MiterPenLineJoin.Miter
24.83.10.PenLineCap.FlatPenLineCap.Flat
24.83.11.PenLineCap.SquarePenLineCap.Square
24.83.12.PenLineCap.RoundPenLineCap.Round
24.83.13.PenLineCap.TrianglePenLineCap.Triangle
24.83.14.StrokeStartLineCap=Round, StrokeEndLineCap=RoundStrokeStartLineCap=Round, StrokeEndLineCap=Round
24.83.15.Dotted PathDotted Path