Partager via


Comment : définir un stylet

Cet exemple montre comment utiliser un Pen pour esquisser une forme. Pour créer un Pen simple, vous devez uniquement spécifier son Thickness et son Brush. Vous pouvez créer un stylet plus complexe en spécifiant des objets DashStyle, DashCap, LineJoin, StartLineCap et EndLineCap.

Exemple

L'exemple suivant utilise un Pen pour esquisser une forme définie par un GeometryDrawing.


Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media
Namespace SDKSample
    Partial Public Class PenExample
        Inherits Page
        Public Sub New()
            ' Create several geometries.
            Dim myRectangleGeometry As New RectangleGeometry()
            myRectangleGeometry.Rect = New Rect(0, 0, 50, 50)
            Dim myEllipseGeometry As New EllipseGeometry()
            myEllipseGeometry.Center = New Point(75, 75)
            myEllipseGeometry.RadiusX = 50
            myEllipseGeometry.RadiusY = 50
            Dim myLineGeometry As New LineGeometry()
            myLineGeometry.StartPoint = New Point(75, 75)
            myLineGeometry.EndPoint = New Point(75, 0)

            ' Create a GeometryGroup and add the geometries to it.
            Dim myGeometryGroup As New GeometryGroup()
            myGeometryGroup.Children.Add(myRectangleGeometry)
            myGeometryGroup.Children.Add(myEllipseGeometry)
            myGeometryGroup.Children.Add(myLineGeometry)

            ' Create a GeometryDrawing and use the GeometryGroup to specify
            ' its geometry.
            Dim myGeometryDrawing As New GeometryDrawing()
            myGeometryDrawing.Geometry = myGeometryGroup

            ' Add the GeometryDrawing to a DrawingGroup.
            Dim myDrawingGroup As New DrawingGroup()
            myDrawingGroup.Children.Add(myGeometryDrawing)

            ' Create a Pen to add to the GeometryDrawing created above.
            Dim myPen As New Pen()
            myPen.Thickness = 10
            myPen.LineJoin = PenLineJoin.Round
            myPen.EndLineCap = PenLineCap.Round

            ' Create a gradient to use as a value for the Pen's Brush property.
            Dim firstStop As New GradientStop()
            firstStop.Offset = 0.0
            Dim c1 As New Color()
            c1.A = 255
            c1.R = 204
            c1.G = 204
            c1.B = 255
            firstStop.Color = c1
            Dim secondStop As New GradientStop()
            secondStop.Offset = 1.0
            secondStop.Color = Colors.Purple

            Dim myLinearGradientBrush As New LinearGradientBrush()
            myLinearGradientBrush.GradientStops.Add(firstStop)
            myLinearGradientBrush.GradientStops.Add(secondStop)

            myPen.Brush = myLinearGradientBrush
            myGeometryDrawing.Pen = myPen

            ' Create an Image and set its DrawingImage to the Geometry created above.
            Dim myImage As New Image()
            myImage.Stretch = Stretch.None
            myImage.Margin = New Thickness(10)

            Dim myDrawingImage As New DrawingImage()
            myDrawingImage.Drawing = myDrawingGroup
            myImage.Source = myDrawingImage

            Me.Content = myImage

        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace SDKSample
{
    public partial class PenExample : Page
    {
        public PenExample()
        {
            // Create several geometries.
            RectangleGeometry myRectangleGeometry = new RectangleGeometry();
            myRectangleGeometry.Rect = new Rect(0, 0, 50, 50);
            EllipseGeometry myEllipseGeometry = new EllipseGeometry();
            myEllipseGeometry.Center = new Point(75, 75);
            myEllipseGeometry.RadiusX = 50;
            myEllipseGeometry.RadiusY = 50;
            LineGeometry myLineGeometry = new LineGeometry();
            myLineGeometry.StartPoint = new Point(75, 75);
            myLineGeometry.EndPoint = new Point(75, 0);

            // Create a GeometryGroup and add the geometries to it.
            GeometryGroup myGeometryGroup = new GeometryGroup();
            myGeometryGroup.Children.Add(myRectangleGeometry);
            myGeometryGroup.Children.Add(myEllipseGeometry);
            myGeometryGroup.Children.Add(myLineGeometry);

            // Create a GeometryDrawing and use the GeometryGroup to specify
            // its geometry.
            GeometryDrawing myGeometryDrawing = new GeometryDrawing();
            myGeometryDrawing.Geometry = myGeometryGroup;

            // Add the GeometryDrawing to a DrawingGroup.
            DrawingGroup myDrawingGroup = new DrawingGroup();
            myDrawingGroup.Children.Add(myGeometryDrawing);

            // Create a Pen to add to the GeometryDrawing created above.
            Pen myPen = new Pen();
            myPen.Thickness = 10;
            myPen.LineJoin = PenLineJoin.Round;
            myPen.EndLineCap = PenLineCap.Round;

            // Create a gradient to use as a value for the Pen's Brush property.
            GradientStop firstStop = new GradientStop();
            firstStop.Offset = 0.0;
            Color c1 = new Color();
            c1.A = 255;
            c1.R = 204;
            c1.G = 204;
            c1.B = 255;
            firstStop.Color = c1;
            GradientStop secondStop = new GradientStop();
            secondStop.Offset = 1.0;
            secondStop.Color = Colors.Purple;

            LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush();
            myLinearGradientBrush.GradientStops.Add(firstStop);
            myLinearGradientBrush.GradientStops.Add(secondStop);

            myPen.Brush = myLinearGradientBrush;
            myGeometryDrawing.Pen = myPen;

            // Create an Image and set its DrawingImage to the Geometry created above.
            Image myImage = new Image();
            myImage.Stretch = Stretch.None;
            myImage.Margin = new Thickness(10);

            DrawingImage myDrawingImage = new DrawingImage();
            myDrawingImage.Drawing = myDrawingGroup;
            myImage.Source = myDrawingImage;

            this.Content = myImage;

        }      
    }
}
<Page 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  Background="White">

  <Image Stretch="None" Margin="20">
    <Image.Source>
      <DrawingImage>
        <DrawingImage.Drawing>
          <DrawingGroup>
            <GeometryDrawing>
              <GeometryDrawing.Geometry>
                <GeometryGroup>
                  <RectangleGeometry Rect="0,0,50,50" />
                  <EllipseGeometry Center="75,75" RadiusX="50" RadiusY="50" />
                  <LineGeometry StartPoint="75,75" EndPoint="75,0" />
                </GeometryGroup>
              </GeometryDrawing.Geometry>
              <GeometryDrawing.Pen>
                <Pen 
                  Thickness="10" 
                  LineJoin="Round" 
                  EndLineCap="Triangle"
                  StartLineCap="Round">
                  <Pen.Brush>
                    <LinearGradientBrush>
                      <GradientStop Offset="0.0" Color="#CCCCFF" />
                      <GradientStop Offset="1.0" Color="Purple" />
                    </LinearGradientBrush>
                  </Pen.Brush>
                </Pen>
              </GeometryDrawing.Pen>
            </GeometryDrawing>
          </DrawingGroup>
        </DrawingImage.Drawing>
      </DrawingImage>
    </Image.Source>
  </Image>






</Page>

GeometryDrawing

Contours produits à l'aide d'un stylet