Example





In This Topic
GdPicture14 Namespace / GdPicturePDF Class / FillAndStrokePathOdd Method

FillAndStrokePathOdd Method (GdPicturePDF)

In This Topic
Fills and then strokes the current path, defined within a currently selected page of the loaded PDF document, using the even-odd rule (an alternative to the nonzero winding number rule) to determine the region to fill. More precisely, this method sets the path-painting operator "B*". According to the PDF Reference, any sub-paths, that are open, are implicitly closed before being filled.

The use of this method has the same effect as the use of the method FillAndStrokePath(), except of the rule used to fill the path. Therefore all details related to the GdPicturePDF.FillAndStrokePath method remain in effect. Be aware of your currently defined graphics state parameters, that both filling and stroking operations put into effect.

Syntax
'Declaration
 
Public Function FillAndStrokePathOdd() As GdPictureStatus
public GdPictureStatus FillAndStrokePathOdd()
public function FillAndStrokePathOdd(): GdPictureStatus; 
public function FillAndStrokePathOdd() : GdPictureStatus;
public: GdPictureStatus FillAndStrokePathOdd(); 
public:
GdPictureStatus FillAndStrokePathOdd(); 

Return Value

A member of the GdPictureStatus enumeration. If the method has been successfully followed, then the return value is GdPictureStatus.OK.

We strongly recommend always checking this status first.

Remarks
This method is only allowed for use with non-encrypted documents.

You also need to be aware that the path-painting operators end a path object, so once a path has been painted (filled or stroked), it is no longer defined. In other words, the sequence of the GdPicturePDF.FillPathOdd and GdPicturePDF.StrokePath methods has not that effect as using the GdPicturePDF.FillAndStrokePathOdd method.

For further assistance, please see the Path Construction and Painting section and the Graphics State section of the GdPicturePDF class in the Reference Guide, as well as the Path-Painting Operators section in the PDF Reference.

Example
How to fill and stroke the current path at the same time using both rules to determine the region to fill.
Dim caption As String = "Example: FillAndStrokePathOdd"
Dim gdpicturePDF As New GdPicturePDF()
Dim status As GdPictureStatus = gdpicturePDF.NewPDF()
If status = GdPictureStatus.OK Then
    gdpicturePDF.SetOrigin(PdfOrigin.PdfOriginTopLeft)
    gdpicturePDF.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitMillimeter)
    If (gdpicturePDF.NewPage(210, 297) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetLineWidth(2) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetLineColor(255, 0, 0) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetFillColor(138, 43, 226) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.BeginPath(100, 10) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(20, 50) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(190, 50) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.FillAndStrokePath() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.BeginPath(100, 80) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(20, 120) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(190, 120) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.ClosePath() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.FillAndStrokePath() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.BeginPath(180, 150) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(20, 205) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(180, 180) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(20, 150) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddLineToPath(180, 205) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.ClosePath() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.FillAndStrokePathOdd() = GdPictureStatus.OK) Then
        status = gdpicturePDF.SaveToFile("test_FillAndStrokePathOdd.pdf")
        If status = GdPictureStatus.OK Then
            MessageBox.Show("The example has been followed successfully and the file has been saved.", caption)
        Else
            MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption)
        End If
    Else
        MessageBox.Show("The example has not been followed successfully." + vbCrLf + "The last known status is " + gdpicturePDF.GetStat().ToString(), caption)
    End If
Else
    MessageBox.Show("The NewPDF() method has failed with the status: " + status.ToString(), caption)
End If
gdpicturePDF.Dispose()
string caption = "Example: FillAndStrokePathOdd";
GdPicturePDF gdpicturePDF = new GdPicturePDF();
GdPictureStatus status = gdpicturePDF.NewPDF();
if (status == GdPictureStatus.OK)
{
    gdpicturePDF.SetOrigin(PdfOrigin.PdfOriginTopLeft);
    gdpicturePDF.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitMillimeter);
    if ((gdpicturePDF.NewPage(210, 297) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetLineWidth(2) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetLineColor(255, 0, 0) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetFillColor(138, 43, 226) == GdPictureStatus.OK) &&
        (gdpicturePDF.BeginPath(100, 10) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(20, 50) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(190, 50) == GdPictureStatus.OK) &&
        (gdpicturePDF.FillAndStrokePath() == GdPictureStatus.OK) &&
        (gdpicturePDF.BeginPath(100, 80) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(20, 120) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(190, 120) == GdPictureStatus.OK) &&
        (gdpicturePDF.ClosePath() == GdPictureStatus.OK) &&
        (gdpicturePDF.FillAndStrokePath() == GdPictureStatus.OK) &&
        (gdpicturePDF.BeginPath(180, 150) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(20, 205) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(180, 180) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(20, 150) == GdPictureStatus.OK) &&
        (gdpicturePDF.AddLineToPath(180, 205) == GdPictureStatus.OK) &&
        (gdpicturePDF.ClosePath() == GdPictureStatus.OK) &&
        (gdpicturePDF.FillAndStrokePathOdd() == GdPictureStatus.OK))
    {
        status = gdpicturePDF.SaveToFile("test_FillAndStrokePathOdd.pdf");
        if (status == GdPictureStatus.OK)
            MessageBox.Show("The example has been followed successfully and the file has been saved.", caption);
        else
            MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption);
    }
    else
        MessageBox.Show("The example has not been followed successfully.\nThe last known status is " + gdpicturePDF.GetStat().ToString(), caption);
}
else
    MessageBox.Show("The NewPDF() method has failed with the status: " + status.ToString(), caption);
gdpicturePDF.Dispose();
See Also