SVG 使用marker画箭头(一)

一、使用Marker画箭头

1.定义一个箭头的marker引用

<defs>
    <marker id=‘markerArrow‘ markerWidth=‘13‘ markerHeight=‘13‘ refx=‘2‘ refy=‘6‘ orient=‘auto‘>
        <path d=‘M2,2 L2,11 L10,6 L2,2‘ style=‘fill:#00ff00‘ />
    </marker>
</defs>

注:orient="auto" 这个属性,箭头的方向会自动适应线条的方向。

2.定义线line,添加marker-start,marker-mid,marker-end 添加箭头加入的相应位置

<line x1=‘10‘ y1=‘10‘ x2=‘100‘ y2=‘50‘ stroke=‘red‘ stroke-width=‘2‘
    marker-start=‘url(#markerArrow)‘
    marker-mid=‘url(#markerArrow)‘
    marker-end=‘url(#markerArrow)‘>
</line>

<line x1=‘100‘ y1=‘100‘ x2=‘200‘ y2=‘150‘ stroke=‘red‘ stroke-width=‘2‘
    marker-end=‘url(#markerArrow)‘></line>

3.使用path,在曲线中指定箭头位置

<path d=‘M50,250 c15,-75 30,30 100,0 s50,-50 150,50‘
stroke=‘brown‘ stroke-width=‘5‘ fill=‘none‘
marker-start=‘url(#markerArrow)‘
marker-mid=‘url(#markerArrow)‘
marker-end=‘url(#markerArrow)‘/>

显示结果:

可以发现在直线line中marker-mid 是不起作用的,

我试过即使用path画一条直线也是一样的,
直线画中间的箭头需要用到三角函数,

在另一篇文章中有详细介绍:http://blog.csdn.net/tuposky/article/details/40677477

二、使用SVG.js 画箭头操作示例

var draw = SVG(‘container‘).size(300, 300);
draw.style(‘border‘, ‘1px solid green‘);

//定义marker
var arrow = draw.marker(12, 12, function (add) {
    add.path(‘M2,2 L2,11 L10,6 L2,2‘);
    add.style({
        fill: ‘green‘
    });
});
//使用 Marke标记画箭头
//画箭头
var line = draw.line(0, 0, 200, 150);
line.stroke(‘blue‘).attr({
    ‘stroke-width‘: 2
});
line.marker(‘end‘, arrow);

//画箭头2
var line2 = draw.polyline([
    [100, 0],
    [100, 200],
    [150, 200]
]);
line2.fill(‘none‘).style({
    stroke: ‘red‘,
    ‘stroke-width‘: 1
});
line2.marker(‘end‘, arrow)

更多:

SVG Path路径使用(一)

SVG Stroke属性

SVG 相关整理

时间: 2024-10-13 10:33:23

SVG 使用marker画箭头(一)的相关文章

WPF画箭头

前段时间,因工作需要利用WPF画箭头,在参考Using WPF to Visualize a Graph with Circular Dependencies后.自己写了一个WPF画箭头的库. 先上效果图, XAML代码如下: <Window x:Class="WPFArrows.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="

使用Canvas画箭头

canvas是HTML5的一个新添加的元素,HTML5 canvas是一个原生HTML绘图薄,用于Javascript代码,不使用第三方工具. canvas部分方法列表: 方法 用途 getContext(contextId) 公开在 canvas 上绘图需要的 API.惟一(当前)可用的 contextID 是 2d. height 设置 canvas 的高度.默认值是 150 像素. width 设置 canvas 的宽度.默认值是 300 像素. createLinearGradient(

WPF Path 画箭头

原文:WPF Path 画箭头 代码: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height=

android 使用Canvas画箭头

public class MyCanvas extends View{        private Canvas myCanvas;    private Paint myPaint=new Paint();        public MyCanvas(Context context) {        super(context);        // TODO Auto-generated constructor stub    }     public MyCanvas(Context

SVG.js Marker标记和自定义标签

一.SVG.Marker 添加标记 SVG.Marker 标记可以被添加到一个线,折线的各点,多边形和路径.有三种类型的标记:开始,中间和结束.如果开始表示第一个点,则结束中间的最后一点和中间点. var draw = SVG('svg1').size(300, 300); var line = draw.line(0, 0, 200, 150); line.stroke('blue').move(20, 20); //创建marker,声明时指定宽度和高度,在标记处添加的形状超出部分会隐藏 v

纯css 画箭头

原理: 把容器的边框设置大一点,容器本身的长宽为0,只设置一边的颜色让其自然形成 箭头 参考文章 http://yuiblog.com/blog/2010/11/22/css-quick-tip-css-arrows-and-shapes-without-markup/ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

画箭头

using (Pen mypen = new Pen(Color.Black, 6)) { mypen.StartCap = LineCap.DiamondAnchor;//设置起始箭头 mypen.EndCap = LineCap.ArrowAnchor;//设置结尾箭头 e.Graphics.DrawLine(mypen, 20f, 20f, 100f, 20f);//绘制直线 };//创建钢笔对象

Delphi 画箭头

procedure TForm1.Line(x, y, x2, y2: integer); begin canvas.MoveTo(x, y); canvas.LineTo(x2, y2); end; procedure TForm1.Button1Click(Sender: TObject); var x, y, len: integer; r: TRect; begin r := self.ClientRect; len := r.Right - r.Left; if len < 5 the

SVG渲染顺序及z轴显示问题(zIndex)

SVG是严格按照定义元素的顺序来渲染的,这个与HTML靠z-index值来控制分层不一样. 在SVG中,写在前面的元素先被渲染,写在后面的元素后被渲染.后渲染的元素会覆盖前面的元素,虽然有时候受透明度影响,看起来不是被覆盖的,但是SVG确实是严格按照先后顺序来渲染的. 注意:SVG是以XML定义的,所以是大小写敏感的,这点与HTML不一样. 关于z轴显示问题的解决方案: 注:动态移动对应的标签在SVG文档中的顺序,在文档结尾处的显示在z轴的上部. Html代码 <svg style='borde