Q:

Draw tilted arrow on a diagram using overpic

I have an image in PNG format. I wanted to draw some arrows over it. These arrows are neither horizontal nor vertical. I am facing problem while assigning the directions to vector.
Below is the image (in which I have drawn the lines from image editor, just to show)

Below is the code to draw an arrow-
\documentclass{article}
\usepackage[percent]{overpic}
\usepackage{xcolor}

\begin{document}
\begin{overpic}{tube}
\put(36,36){\color{green}\vector(2.5,1){50}}
\end{overpic}
\end{document}

Below is the output-

Notice that .5 is getting printed. I have following questions-

How to align arrows in any direction easily?
How to draw dotted lines and arrows?
How to set thickness of the arrow?

A:

Why not use some thing modern and powerful? Use tikz. You can draw on images.
 \documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{angles}
\begin{document}
\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0,0) {\includegraphics[width=5in]{tube}};
    \begin{scope}[x={(image.south east)},y={(image.north west)}]
        %% next four lines will help you to locate the point needed by forming a grid. comment these four lines in the final picture.↓
        \draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
        \draw[help lines,xstep=.05,ystep=.05] (0,0) grid (1,1);
        \foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
        \foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y};}
        %% upto here↑
        \begin{scope}[shift={(0.425,0.525)},rotate=-30] %% ←  adjust shift here
          \draw[green,ultra thick,-latex] (0,0,0)coordinate[pos=0] (o) -- coordinate (a) (0.30,0,0);
          \draw[red,line width=1pt,dotted] (0,0,0) -- coordinate[pos=1] (b)(0,0.30,0);
          \draw[blue,line width=2pt,dashed] (0,0,0) -- coordinate[pos=1] (c) (0,0,3);
          \draw pic [draw=blue,fill=red,angle radius=5mm] {angle = a--o--c};
          \draw pic [draw=green,fill=blue,angle radius=6mm] {angle = a--o--b};
          \draw pic [draw=red,fill=green,angle radius=7mm] {angle = c--o--a};
        \end{scope}
        \node[align=center,text width=4cm, text=red,font=\bfseries] (c) at (0.75,0.75) {Some text here that can run in to many lines};

    \end{scope}
\end{tikzpicture}

\end{document}

If you uncomment the lines that draw coordinate system (grids)
%% next four lines will help you to locate the point needed by forming a grid. comment these four lines in the final picture.↓
        %\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
        %\draw[help lines,xstep=.05,ystep=.05] (0,0) grid (1,1);
        %\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
        %\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y};}
        %% upto here↑

you get

A:

The first argument to \vector should be a pair of (coprime) integers. However, the pict2e package removes this restriction and also allows for arbitrary line thickness.
\documentclass{article}
\usepackage[percent]{overpic}
\usepackage{xcolor}
\usepackage{pict2e}

\begin{document}

\begin{overpic}{example-image}
\linethickness{2pt}
\put(36,36){\color{green}\vector(2.5,1){50}}
\end{overpic}

\end{document}

The pict2e package doesn't support dotted arrows.

