在图片角度中填充不透明度作用于箭头隐身和乳胶头

在图片角度中填充不透明度作用于箭头隐身和乳胶头

我想添加一些不透明度来绘制几个角度,但箭头(-latex-stealth)是用fill opacity选项修改的。目前,我正在重新绘制所有角度两次,使用填充选项和不使用填充选项,以保持箭头平坦。

首先:如何才能保持箭头不透明?

第二:-latex箭头的填充区域和绘制的线条不再匹配。它们之间有一个小空白。

这些问题仍然存在于图书馆arrowarrows.meta

这里是 MWE:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{angles, quotes, positioning, calc}

\begin{document}
    \begin{tikzpicture}[line width=0.8pt]
        \pgfmathsetmacro{\r}{4}
        \pgfmathsetmacro{\A}{80}
        \pgfmathsetmacro{\B}{150}
        
        \draw[-stealth, line width=0.4pt] (-\r-0.6,0) -- (\r+0.65,0) coordinate[label=above left:x] (X) ;
        \draw[-stealth, line width=0.4pt] (0,-\r-0.6) -- (0,\r+0.65) coordinate[label=below right:y] (Y) ;
        \draw (\r,-1.85*\r) -- (\r,1.85*\r);
        \draw (0,0) coordinate (O) circle(\r);
        %% Valeurs d'angles
        \coordinate (A) at (\A:\r);
        \coordinate (B) at (\B:\r);
        
        %% Représentation des angles
        \pic["$\beta$", draw, blue, fill=blue!30,  angle eccentricity=1.7, angle radius=0.4cm, -stealth, pic text options={xshift=-13pt}] {angle=X--O--B};
        \pic["$\alpha$", draw, teal!70!black, fill=black!30, fill opacity=0.6,  angle eccentricity=1.5, angle radius=0.7cm, -latex, pic text options={text opacity=1}] {angle=X--O--A};
        
        \draw (O) -- (A.center);
        \draw (O) -- (B.center);
        
        \draw[-stealth, line width=0.4pt] (0,0) -- (X);
    \end{tikzpicture}
\end{document}

这里突出了问题: 在此处输入图片描述

答案1

仅加载arrows.meta库不会改变任何箭头提示(特殊的除外),它在这种情况下>提供自己的大写单词:StealthLatex/ 。LaTeX

如果你想使用功能arrows.meta或定义快捷方式,请使用它们

\tikzset{
  stealth/.tip = Stealth,
  latex/.tip = LaTeX,
}

覆盖预定义的提示。

你的第二个问题很容易通过加载来解决bending图书馆设置flex箭头键。(默认值是quick,可以通过执行 来设置\tikzset{arrows={[quick]}}。)

(背景:该angle库将填充和绘图分成两个独立的路径(并在两个不同的层上),从而使这两个操作不同步。箭头尖端在直线上将曲线偏移了尖端长度,从而导致了这种畸形的曲线。)

为您第一个问题我提供了一个新的箭头键: 。由于不透明度和填充的箭头尖端从来都不能很好地放在一起,所以我在序言中将fill opacity其设置为。1

我还text opacity=1为图片添加了序言angle。似乎是一个不错的默认设置。

顺便说一句,如果括号中不包含逗号,那么"<label>", pic text options={<options>}您可以写成"<label>" {<options>}“其中括号是可选的”。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, angles, bending, quotes, positioning, calc}
\pgfset{arrow keys/fill opacity/.code=
  \pgfarrowsaddtooptions{\pgfsetfillopacity{#1}}}
\tikzset{arrows={[fill opacity=1]}} % seems right to declare this globally
\tikzset{pics/angle/.append style={/tikz/text opacity=1}}% this, too
\begin{document}
\begin{tikzpicture}[line width=0.8pt]
\pgfmathsetmacro{\r}{4}
\pgfmathsetmacro{\A}{80}
\pgfmathsetmacro{\B}{150}

\draw[-Stealth, line width=0.4pt] (-\r-0.6,0) -- (\r+0.65,0)
  coordinate[label=above left:x] (X) ;
\draw[-Stealth, line width=0.4pt] (0,-\r-0.6) -- (0,\r+0.65)
  coordinate[label=below right:y] (Y) ;
\draw (\r,-1.85*\r) -- (\r,1.85*\r);
\draw (0,0) coordinate (O) circle(\r);
%% Valeurs d'angles
\coordinate (A) at (\A:\r);
\coordinate (B) at (\B:\r);

%% Représentation des angles
\pic["$\beta$",  draw, blue, fill=blue!30,
  angle eccentricity=1.7, angle radius=0.4cm, -Stealth,
  pic text options={xshift=-13pt}] {angle=X--O--B};
\pic["$\alpha$", draw, teal!70!black, fill=black!30, fill opacity=0.6,
  angle eccentricity=1.5, angle radius=0.7cm, -Latex] {angle=X--O--A};

\draw (O) -- (A.center);
\draw (O) -- (B.center);

\draw[-Stealth, line width=0.4pt] (0,0) -- (X);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

答案2

@Qrrbrbirbel 的回答 (+1) 有一点小改动,但基本与主题无关,它已经解决了您的主要问题。在我的 MWE 中进行了更改:

  • 箭头的定义
  • 风格的定义pic很常见
  • 代码稍微短一点

一切为了锻炼和快乐......

\documentclass[tikz,
               margin=3mm]{standalone}
\usetikzlibrary{angles, arrows.meta,
                backgrounds, bending,
                quotes}
\pgfset{arrow keys/fill opacity/.code=
    \pgfarrowsaddtooptions{\pgfsetfillopacity{#1}}  % <--- new arrow option!
        }
\tikzset{
          arr/.style = {-{#1[fill opacity=1]}, thin},
        arr/.default = Stealth,
my angle/.style args = {#1/#2/#3/#4}{draw=#1, arr=#2,
                        fill=#1!30, fill opacity=#3,
                        angle radius = #4,
                        angle eccentricity=1.3},
my angle/.default    = {blue/Triangle/1/5mm},
        }
\begin{document}
    \begin{tikzpicture}[line width=0.8pt]
\pgfmathsetmacro{\r}{4}
\pgfmathsetmacro{\R}{\r+0.7}
\pgfmathsetmacro{\A}{80}
\pgfmathsetmacro{\B}{150}

% coordonnés
\draw[arr] (-\R,0) -- (\R,0)   coordinate[label=below  left:$x$] (X);
\draw[arr] (0,-\R) -- (0,\R)   coordinate[label=below right:$y$] (Y);
% cercle
\draw (0,0) coordinate (O) circle(\r);
%% Valeurs d'angles
\coordinate (A) at (\A:\r);
\coordinate (B) at (\B:\r);

%% Représentation des angles
\scoped[on background layer]
{
\pic[my angle,  "$\beta$",
     pic text options={xshift=-11pt}]   {angle=X--O--B};
\pic[my angle=red/Stealth/0.6/7mm,
                "$\alpha$"]             {angle=X--O--A};
}
\draw[line join=bevel] (A) -- (O) -- (B);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容