Click here to Skip to main content
15,886,518 members
Articles / Desktop Programming / WPF

Convert XAML Vector Graphic to PNG

Rate me:
Please Sign up or sign in to vote.
4.87/5 (11 votes)
23 Oct 2012CPOL12 min read 74.3K   6.8K   43  
An introduction to the usage of vector graphics as a source of bitmap graphics.
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Canvas Canvas.Left="-2.57322573435727" Canvas.Top="-2.3101559">
    <Canvas>
      <Canvas>
        <Rectangle Stroke="{x:Null}" Width="1339.6335" Height="478.35718" Opacity="0.40206185" Canvas.Left="-1559.2523" Canvas.Top="-150.69685">
          <Rectangle.Fill>
            <LinearGradientBrush StartPoint="507.316899099553,4.42934847058041E-05" EndPoint="507.316899099553,478.357303090243" MappingMode="Absolute" SpreadMethod="Pad">
              <LinearGradientBrush.GradientStops>
                <GradientStop Color="#00000000" Offset="0" />
                <GradientStop Color="#FF000000" Offset="0.5" />
                <GradientStop Color="#00000000" Offset="1" />
              </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
          </Rectangle.Fill>
        </Rectangle>
        <Path Data="F1M-219.61876,-150.68038C-219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038z" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.40206185">
          <Path.Fill>
            <RadialGradientBrush Center="605.71429,486.64789" RadiusX="117.14286" RadiusY="117.14286" GradientOrigin="605.71429,486.64789" MappingMode="Absolute">
              <RadialGradientBrush.GradientStops>
                <GradientStop Color="#FF000000" Offset="0" />
                <GradientStop Color="#00000000" Offset="1" />
              </RadialGradientBrush.GradientStops>
              <RadialGradientBrush.Transform>
                <MatrixTransform Matrix="2.77438902854919,0,0,1.9697060585022,-1891.63305664063,-872.885375976563" />
              </RadialGradientBrush.Transform>
            </RadialGradientBrush>
          </Path.Fill>
        </Path>
        <Path Data="F1M-1559.2523,-150.68038C-1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038z" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.40206185">
          <Path.Fill>
            <RadialGradientBrush Center="605.71429,486.64789" RadiusX="117.14286" RadiusY="117.14286" GradientOrigin="605.71429,486.64789" MappingMode="Absolute">
              <RadialGradientBrush.GradientStops>
                <GradientStop Color="#FF000000" Offset="0" />
                <GradientStop Color="#00000000" Offset="1" />
              </RadialGradientBrush.GradientStops>
              <RadialGradientBrush.Transform>
                <MatrixTransform Matrix="-2.77438902854919,0,0,1.9697060585022,112.762298583984,-872.885375976563" />
              </RadialGradientBrush.Transform>
            </RadialGradientBrush>
          </Path.Fill>
        </Path>
        <Canvas.RenderTransform>
          <MatrixTransform Matrix="0.0210546087473631,0,0,0.0208675786852837,42.6749382019043,38.5018997192383" />
        </Canvas.RenderTransform>
      </Canvas>
      <Path Data="M7.1903818,30.619256L6.9579435,41.499992 41.036463,41.499992 40.503612,28.827804 7.1903818,30.619256z" Stroke="#FF2E3436" StrokeThickness="0.999999940395355" StrokeLineJoin="Round" StrokeMiterLimit="4">
        <Path.Fill>
          <LinearGradientBrush StartPoint="25.2829413374066,37.548233" EndPoint="25.2829413374066,39.750675" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF383936" Offset="0" />
              <GradientStop Color="#FF555753" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Fill>
      </Path>
      <Path Data="M7.5296067,37.613897L7.3305593,41 41.314314,41 7.8281776,40.502043 7.5296067,37.613897z" Fill="#3BFFFFFF" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.23076923" />
      <Path Data="M6.8123473,11.277009L39.685523,11.277009 43.018667,36.964114 5.0307392,36.964114 6.8123473,11.277009z" Fill="#FFCACACA" Stroke="#FF686868" StrokeThickness="1.00000071525574" StrokeMiterLimit="4" />
      <Path Data="M6.1824687,8.5000038L39.920999,8.5000038 43.341885,35.500012 4.3539614,35.500012 6.1824687,8.5000038z" Stroke="#FF868A84" StrokeThickness="1.00000083446503" StrokeMiterLimit="4">
        <Path.Fill>
          <LinearGradientBrush StartPoint="37.7984221881192,27.0062173548627" EndPoint="36.223122636395,21.1526361434937" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FFFFFFFF" Offset="0" />
              <GradientStop Color="#FFE6E6E6" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Fill>
      </Path>
      <Path Data="M7.12847,9.5000031L39.02851,9.5000031 42.073547,34.500001 5.423245,34.500001 7.12847,9.5000031z" Fill="{x:Null}" Stroke="#FFFFFFFF" StrokeThickness="1" StrokeMiterLimit="4" />
      <Path Data="M42.811018,35.038881L42.089624,29.15164 35.826652,35.061723 42.811018,35.038881z" Fill="#35000000" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.20879122" />
      <Path Data="M15.644737,17.903767A1.8119612,3.6681163,0,1,1,12.020815,17.903767A1.8119612,3.6681163,0,1,1,15.644737,17.903767z" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.33516487">
        <Path.Fill>
          <RadialGradientBrush Center="13.832776,17.903767" RadiusX="1.8119612" RadiusY="1.8119612" GradientOrigin="13.832776,17.903767" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1,0,0,2.02438998222351,1.46367200641314E-16,-18.3404407501221" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.62031602859497,0,0,1.12674701213837,0.837298989295959,-7.68939590454102" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M15.644737,17.903767A1.8119612,3.6681163,0,1,1,12.020815,17.903767A1.8119612,3.6681163,0,1,1,15.644737,17.903767z" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.33516487">
        <Path.Fill>
          <RadialGradientBrush Center="13.832776,17.903767" RadiusX="1.8119612" RadiusY="1.8119612" GradientOrigin="13.832776,17.903767" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1,0,0,2.02438998222351,1.66255999581571E-14,-18.3404407501221" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.12598204612732,0,0,0.958072006702423,19.3195896148682,-5.28820180892944" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M15.644737,17.903767A1.8119612,3.6681163,0,1,1,12.020815,17.903767A1.8119612,3.6681163,0,1,1,15.644737,17.903767z" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.33516487">
        <Path.Fill>
          <RadialGradientBrush Center="13.832776,17.903767" RadiusX="1.8119612" RadiusY="1.8119612" GradientOrigin="13.832776,17.903767" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1,0,0,2.02438998222351,-3.66395324521399E-15,-18.3404407501221" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.12598204612732,0,0,1.05445802211761,-4.56608915328979,-6.66031312942505" />
        </Path.RenderTransform>
      </Path>
      <Path Data="F1M19.718956,29.3237L17.369387,29.3237 17.369387,18.734619 14.383844,19.636192 14.383844,17.647425 19.718956,16.180157 19.718956,29.3237 M32.023276,29.3237L23.967612,29.3237 23.967612,27.441C26.599831,24.77753 28.092601,23.260174 28.445926,22.888931 28.805126,22.511811 29.090726,22.117004 29.302723,21.704511 29.520596,21.286141 29.629536,20.832408 29.629543,20.34331 29.629536,19.777626 29.444044,19.323893 29.073066,18.982109 28.707964,18.634454 28.195652,18.460621 27.536129,18.460611 27.106255,18.460621 26.632219,18.575527 26.114022,18.805329 25.595819,19.02926 25.127674,19.344517 24.709581,19.751099L24.709581,17.373417C25.869641,16.701669 26.967872,16.365788 28.004277,16.365774 29.234997,16.365788 30.19779,16.695776 30.892657,17.355739 31.593397,18.009835 31.94377,18.914354 31.943779,20.069302 31.94377,20.78232 31.743557,21.504169 31.343137,22.234849 30.948591,22.965543 30.350894,23.702122 29.550045,24.44459L26.432008,27.35261 32.023276,27.35261 32.023276,29.3237" Stroke="{x:Null}" StrokeThickness="1">
        <Path.Fill>
          <LinearGradientBrush StartPoint="23.20356,24.077753" EndPoint="30.741646,36.054375" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF2E3436" Offset="0" />
              <GradientStop Color="#002E3436" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Fill>
      </Path>
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Fill="{x:Null}" StrokeThickness="0.846257388591766" StrokeMiterLimit="4">
        <Path.Stroke>
          <RadialGradientBrush Center="12.993087,18.399908" RadiusX="2.1617265" RadiusY="2.1617265" GradientOrigin="12.993087,18.399908" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FFFFFFFF" Offset="0" />
              <GradientStop Color="#00FFFFFF" Offset="1" />
            </RadialGradientBrush.GradientStops>
          </RadialGradientBrush>
        </Path.Stroke>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.18130004405975,0,0,1.1820479631424,-4.86464309692383,-6.42248916625977" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Stroke="{x:Null}" StrokeThickness="1">
        <Path.Fill>
          <RadialGradientBrush Center="12.887021,16.771133" RadiusX="1.5909903" RadiusY="1.5909903" GradientOrigin="12.887021,16.771133" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1.94444394111633,4.46604093022108E-15,-4.46604093022108E-15,1.94444394111633,-12.772120475769,-16.783899307251" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.875764012336731,0,0,0.876358985900879,-0.916889011859894,-1.31427001953125" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Stroke="{x:Null}" StrokeThickness="1">
        <Path.Fill>
          <RadialGradientBrush Center="12.887021,16.771133" RadiusX="1.5909903" RadiusY="1.5909903" GradientOrigin="12.887021,16.771133" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1.94444394111633,4.46604093022108E-15,-4.46604093022108E-15,1.94444394111633,-12.772120475769,-16.783899307251" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.875764012336731,0,0,0.876358985900879,23.0914096832275,-1.31427001953125" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.411076,16.251658A1.4584079,4.3310289,0,1,1,15.998258,11.967015" Fill="{x:Null}" StrokeThickness="1.59681713581085" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeDashCap="Round" StrokeMiterLimit="4">
        <Path.Stroke>
          <LinearGradientBrush StartPoint="10.998293,11.928971" EndPoint="14.539844,13.486036" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF999A98" Offset="0" />
              <GradientStop Color="#FFCACCC8" Offset="0.5" />
              <GradientStop Color="#FF616161" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Stroke>
        <Path.RenderTransform>
          <MatrixTransform Matrix="-0.783151984214783,0,0,1.12674701213837,45.8329086303711,-5.19961404800415" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.411076,16.251658A1.4584079,4.3310289,0,1,1,15.998258,11.967015" Fill="{x:Null}" StrokeThickness="1.3317186832428" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeDashCap="Round" StrokeMiterLimit="4">
        <Path.Stroke>
          <LinearGradientBrush StartPoint="10.998293,11.928971" EndPoint="14.539844,13.486036" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF999A98" Offset="0" />
              <GradientStop Color="#FFCACCC8" Offset="0.5" />
              <GradientStop Color="#FF616161" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Stroke>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.12598204612732,0,0,1.12674701213837,-5.88420486450195,-5.19961404800415" />
        </Path.RenderTransform>
      </Path>
      <Rectangle Fill="#FF868A84" Stroke="{x:Null}" Width="24.582342" Height="1" Canvas.Left="10.417658" Canvas.Top="8" />
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Stroke="{x:Null}" StrokeThickness="1">
        <Path.Fill>
          <RadialGradientBrush Center="12.887021,16.771133" RadiusX="1.5909903" RadiusY="1.5909903" GradientOrigin="12.887021,16.771133" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FF000000" Offset="0" />
              <GradientStop Color="#00000000" Offset="1" />
            </RadialGradientBrush.GradientStops>
            <RadialGradientBrush.Transform>
              <MatrixTransform Matrix="1.94444394111633,4.46604093022108E-15,-4.46604093022108E-15,1.94444394111633,-12.772120475769,-16.783899307251" />
            </RadialGradientBrush.Transform>
          </RadialGradientBrush>
        </Path.Fill>
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.875764012336731,0,0,0.876358985900879,11.6174201965332,-1.36672604084015" />
        </Path.RenderTransform>
      </Path>
      <Rectangle RadiusX="1.03125" RadiusY="1.03125" Stroke="{x:Null}" Width="2.3223372" Height="11.47873" Canvas.Left="21.817968" Canvas.Top="2.3101559">
        <Rectangle.Fill>
          <LinearGradientBrush StartPoint="1.16118103610945,0.809852386088705" EndPoint="1.16118103610945,9.82382848319564" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF999A98" Offset="0" />
              <GradientStop Color="#FFCACCC8" Offset="0.5" />
              <GradientStop Color="#FF616161" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Rectangle.Fill>
      </Rectangle>
      <Path Data="M34.917822,35.178277C37.249002,35.331024 42.536021,32.353306 42.047266,28.569116 40.898934,30.340254 38.55178,29.421256 35.533594,29.537483 35.533594,29.537483 35.912409,34.636031 34.917822,35.178277z" Stroke="#FF868A84" StrokeThickness="1.00000047683716" StrokeMiterLimit="4">
        <Path.Fill>
          <LinearGradientBrush StartPoint="39.588724148409,33.5506813143193" EndPoint="37.8759465545742,31.586280106455" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FF7C7C7C" Offset="0" />
              <GradientStop Color="#FFB8B8B8" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Fill>
      </Path>
      <Path Data="M36.5,33.5C37.506203,33.000162 39.752875,31.931063 40.707366,30.556162 39.490723,30.83227 38.586176,30.620903 36.562775,30.606948 36.562775,30.606948 36.637818,32.933544 36.5,33.5z" Fill="{x:Null}" StrokeThickness="1.00000011920929" StrokeMiterLimit="4" Opacity="0.36931817">
        <Path.Stroke>
          <LinearGradientBrush StartPoint="37.8857769172447,30.7474886013838" EndPoint="38.454369529911,31.5873737284886" MappingMode="Absolute" SpreadMethod="Pad">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FFFFFFFF" Offset="0" />
              <GradientStop Color="#00FFFFFF" Offset="1" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Path.Stroke>
      </Path>
      <Path Data="M23.8125,5.03125A0.84375,0.84375,0,1,1,22.125,5.03125A0.84375,0.84375,0,1,1,23.8125,5.03125z" Fill="#8EFFFFFF" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.55494505">
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.592592000961304,0,0,0.592592000961304,9.0763988494873,1.51851999759674" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M23.8125,5.03125A0.84375,0.84375,0,1,1,22.125,5.03125A0.84375,0.84375,0,1,1,23.8125,5.03125z" Fill="#8EFFFFFF" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.55494505">
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.629630029201508,0,0,0.629630029201508,-4.99306392669678,1.36342394351959" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M23.8125,5.03125A0.84375,0.84375,0,1,1,22.125,5.03125A0.84375,0.84375,0,1,1,23.8125,5.03125z" Fill="#8EFFFFFF" Stroke="{x:Null}" StrokeThickness="1" Opacity="0.55494504">
        <Path.RenderTransform>
          <MatrixTransform Matrix="0.629630029201508,0,0,0.629630029201508,20.8819408416748,1.36342394351959" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Fill="{x:Null}" StrokeThickness="0.846257388591766" StrokeMiterLimit="4">
        <Path.Stroke>
          <RadialGradientBrush Center="12.993087,18.399908" RadiusX="2.1617265" RadiusY="2.1617265" GradientOrigin="12.993087,18.399908" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FFFFFFFF" Offset="0" />
              <GradientStop Color="#00FFFFFF" Offset="1" />
            </RadialGradientBrush.GradientStops>
          </RadialGradientBrush>
        </Path.Stroke>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.18130004405975,0,0,1.1820479631424,7.66440486907959,-6.42248916625977" />
        </Path.RenderTransform>
      </Path>
      <Path Data="M14.584077,16.710526A1.5909903,1.5909903,0,1,1,11.402097,16.710526A1.5909903,1.5909903,0,1,1,14.584077,16.710526z" Fill="{x:Null}" StrokeThickness="0.846257388591766" StrokeMiterLimit="4">
        <Path.Stroke>
          <RadialGradientBrush Center="12.993087,18.399908" RadiusX="2.1617265" RadiusY="2.1617265" GradientOrigin="12.993087,18.399908" MappingMode="Absolute">
            <RadialGradientBrush.GradientStops>
              <GradientStop Color="#FFFFFFFF" Offset="0" />
              <GradientStop Color="#00FFFFFF" Offset="1" />
            </RadialGradientBrush.GradientStops>
          </RadialGradientBrush>
        </Path.Stroke>
        <Path.RenderTransform>
          <MatrixTransform Matrix="1.18130004405975,0,0,1.1820479631424,19.1769905090332,-6.42248916625977" />
        </Path.RenderTransform>
      </Path>
    </Canvas>
  </Canvas>
</Canvas>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Germany Germany
The Windows Presentation Foundation (WPF) and C# are among my favorites and so I developed Edi

and a few other projects on GitHub. I am normally an algorithms and structure type but WPF has such interesting UI sides that I cannot help myself but get into it.

https://de.linkedin.com/in/dirkbahle

Comments and Discussions