上篇文章 如何在WPF绘图中(通过贝塞尔曲线)绘制平滑曲线
前面发文介绍过在wpf中平滑曲线的绘制方法,今天介绍一个绘制曲线的实际应用。
井斜水平投影图就是把某斜井的各个斜井段投影到某一水平面上所得到的图件,反映实际井底偏离井口的水平位移和方位,及钻遇目的层的垂直井深,是油气勘探、开发的基础图件之一。
定义基本的绘图对象:
public abstract class GraphicsBase : DrawingVisual
从DrawingVisual对象继承定义基本绘制对象
public class GraphicsAxis : GraphicsBase
定义绘图对象
定义一个画布对象进行绘制控制DrawingCanvas
坐标轴及刻度设置及绘制
横纵坐标轴及刻度是图件的基础,实际使用中井东西/南北位移数值差异较大,位移的取值能从几米到几百上千米。范围必须能够根据实际的需要调节,同理坐标的原点可以是0点,也可以设置成任意数值。
因为打印的需要,图件本身需要设置成A4大小,然后根据横纵坐标轴设置的取值范围,获取原点的坐标。基于原点坐标计算曲线上的各个点的坐标,绘制曲线。
设置画布宽高为A4大小,
Width="21cm" Height="29.7cm"
定义坐标轴和刻度设置对象,设置坐标轴的起始值范围,主刻度间隔值及每个主刻度中子刻度的个数,以及原点属性。
StartValue :坐标轴起始数值,建议取 0,100,200,等正数数值。
MainTicksValue:主刻度数值,比如设置成200,每个主刻度间隔200
MainTicksCount:坐标轴上有多少个主刻度
DetailTicksCount:子刻度数量,每个主刻度有多少个子刻度,建议设置成4,每个主刻度的子刻度进行5等分
OriginValue:坐标原点的取值,默认0
public class GraphicsDataModel
public int StartValue { get; set; }
public int MainTicksValue { get; set; }
public int MainTicksCount { get; set; }
public int DetailTicksCount { get; set; }
public int OriginValue { get; set; }
///刻度对象
IsZero属性描述这个刻度是否是原点
public class Tick
{
public int Value { get; set; }
public string Label { get; set; }
public bool IsZero { get; set; }
public List DetailTicks { get; set; }
}
绘