TikZ PGF – TikZ Pattern North West Lines Dashed

tikz-pgf

Hello I am trying to create a figure with tikz. Im using patterns to define a few different regions.
zone 0 is gray
zone 1 is north east lines
z2 is north west lines

For some reason the diagonal patterns are coming out dashed. And Im not sure why.
Does anyone know how to fix this?

Below is my code and a screen shot:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usepackage{tkz-euclide}
\usetikzlibrary{calc}
\begin{document}
  \begin{tikzpicture}
    \tkzInit[xmax=5,ymax=5]
    %\tkzAxeXY
    %zone 2 (rectangle, negative)
    \fill[pattern=north west lines] (0,5) rectangle (5.5,0);
    %circle mask
    \fill[white] (4,1.5) circle (1.35);
    %zone 1
    \node[minimum width=2.7cm,
    circle,inner sep=0pt,fill opacity=1,
    line width=2.5mm,pattern=north east lines,opacity=1] at (4,1.5){};
    %zone 0 (positive)
    \node[minimum width=2cm,
    circle,inner sep=0pt,fill opacity=1,
    line width=2.5mm,draw=gray,opacity=1] at (4,1.5){};
    %wall (dashed line)
    \node[minimum width=2cm,
    circle,inner sep=0pt,fill opacity=0,
    line width=.5mm,dashed,draw=black,opacity=1] at (4,1.5){};
  \end{tikzpicture}
\end{document} 

Bad Lines

Best Answer

I think this is a renderer-side problem. For the code at the end, the left one is the screenshot and the right one is the exported PNG.

Here are some code/comment from pgfcorepatterns.code.tex;

% Creates a new colored pattern
%
% [#1] = optional list of variables.
% #2   = pattern name
% #3   = lower left of bounding box
% #4   = upper right of bounding box
% #5   = step vector
% #6   = pattern code
%
% Description:
%
% Declares a new colored pattern. Such patterns have a one or more
% fixed inherent colors. See the pdf-manual for more details on
% uncolored patterns.
%
% The parameters have the same effect as for uncolored patterns.

and code from pgflibrarypatterns.code.tex.

\pgfdeclarepatternformonly{north east lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfusepath{stroke}
}

So I think this is what happened

and what I did

\documentclass[tikz]{standalone}
    \usepackage{tikz}\usetikzlibrary{patterns}

    \pgfdeclarepatternformonly{south west lines}{\pgfqpoint{-0pt}{-0pt}}{\pgfqpoint{3pt}{3pt}}{\pgfqpoint{3pt}{3pt}}{
        \pgfsetlinewidth{0.4pt}
        \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
        \pgfpathlineto{\pgfqpoint{3pt}{3pt}}
        \pgfpathmoveto{\pgfqpoint{2.8pt}{-.2pt}}
        \pgfpathlineto{\pgfqpoint{3.2pt}{.2pt}}
        \pgfpathmoveto{\pgfqpoint{-.2pt}{2.8pt}}
        \pgfpathlineto{\pgfqpoint{.2pt}{3.2pt}}
        \pgfusepath{stroke}}

\begin{document}
    \begin{tikzpicture}
        \fill[pattern=north east lines](0,1)rectangle(1,0);
        \fill[pattern=south west lines](0,1)rectangle(-1,0);
    \end{tikzpicture}
    \begin{tikzpicture}[line width=.4cm]
        \begin{scope}[opacity=.25]
            \draw[thin](1,2)rectangle(2,1)(1.5,1)node[below]{de facto bounding box};
            \draw[thin](0,3)rectangle(3,0)(1.5,0)node[below]{tessellating box};
            \draw[thin](-1,4)rectangle(4,-1)(1.5,-1)node[below]{bounding box};
            \draw[opacity=0](-1,4)rectangle(4,-1);
            \draw(0,0)--(3.1,3.1);
        \end{scope}
        \clip(1,2)rectangle(2,1);
        \draw(0,0)--(3,3);
    \end{tikzpicture}
    \begin{tikzpicture}[line width=.4cm]
        \begin{scope}[opacity=.25]
            \draw[thin](0,3)rectangle(3,0)(1.5,0)node[below]{bounding box = tessellating box};
            \draw(0,0)--(3,3)(-.2,2.8)--(.2,3.2)(2.8,-.2)--(3.2,.2);
        \end{scope}
        \clip(0,3)rectangle(3,0);
        \draw(0,0)--(3,3)(-.2,2.8)--(.2,3.2)(2.8,-.2)--(3.2,.2);
    \end{tikzpicture}
\end{document}

south east version

For your convenience, here is a south east version

\pgfdeclarepatternformonly{south east lines}{\pgfqpoint{-0pt}{-0pt}}{\pgfqpoint{3pt}{3pt}}{\pgfqpoint{3pt}{3pt}}{
    \pgfsetlinewidth{0.4pt}
    \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
    \pgfpathlineto{\pgfqpoint{3pt}{0pt}}
    \pgfpathmoveto{\pgfqpoint{.2pt}{-.2pt}}
    \pgfpathlineto{\pgfqpoint{-.2pt}{.2pt}}
    \pgfpathmoveto{\pgfqpoint{3.2pt}{2.8pt}}
    \pgfpathlineto{\pgfqpoint{2.8pt}{3.2pt}}
    \pgfusepath{stroke}}