• GDI+技术的坐标解决方案


       GDI+技术已经给我们提供了很好的基本绘制封装,从画线,到画圆,画椭圆,画矩形,画各种曲线,等等。但是我们要利用这些基本技术来完成现实中需要的功能。坐标就是一个很好的例子。

        二维坐标的概念对于大家来说并不陌生。由坐标系和具体数据图形组成。我们分两个部分来完成这个坐标。

        首先,完成坐标系的显示。坐标系定下来之后,它定义的某些参数直接影响到后面数据图形的显示。我们定义坐标系类为BaseGraphics类,

    属性:
    x轴每格坐标间的实际象素  public int XScreenScale
    y轴每格坐标间的实际象素 public int YScreenScale
    坐标的起点,X值(图纸上显示) public float RealXOrigin
    坐标的起点,Y值(图纸上显示)public float RealYOrigin
    坐标的起点,右边Y轴(图纸上显示)public float RealRightYOrigin
    X轴每格代表的数值public float RealXTickValue
    Y轴每格代表的数值public float RealYTickValue
    X坐标的标签public string LabelX
    Y坐标的标签  public string LabelY
    相隔显示X坐标刻度值public int XInterval
    相隔显示Y坐标刻度值public int YInterval
    X坐标值精度public string XVirtualValue
    Y坐标值精度 public string YVirtualValue

    方法:

    绘制图形方法:

    绘制X坐标
      protected void DrawXAxis(Graphics g)

    绘制Y坐标
      protected void DrawYAxis(Graphics g)

    绘制顶部X坐标,不带刻度
    protected void DrawTopXAxisWithoutScale(Graphics g)
    绘制右边Y坐标,不带刻度
    protected void DrawRightYAxisWithoutScale(Graphics g)

    绘制X坐标分隔线及背景线
     protected void DrawXCompartLine(Graphics g)
     绘制Y坐标分隔线及背景线
    protected void DrawYCompartLine(Graphics g)

     绘制X坐标标签
      protected void DrawXlabel(Graphics g)

     绘制Y坐标标签
      protected void DrawYlabel(Graphics g)
     
    绘制单一坐标,一个Y轴,一个X轴
    public void DrawSingleCoordinate(Graphics g) 
     

    数据转换方法:


    将X坐标转换成对应计算机的象素点
     计算机屏幕上对应的象素点X坐标
      public int  TranslateX(float x)
     
     将Y坐标转换成对应计算机的象素点
    计算机屏幕上对应的象素点Y坐标
      public int TranslateY(float y)

      开始使用BaseGraphics类的时候,可以先继承它,这样坐标系的显示就包括新类中了。扩展这个使用类只要把要显示的图形定义出所需的属性即可。

    考虑到图形的重绘机制,每次重绘的时候,都要将图形从最初开始重绘,这样很费CPU的时间,可以先定义一个BITMAP,把图形绘制在BITMAP上,响应重绘消息时直接调用BITMAP即可。于是在该使用类中定义public Bitmap bitmap 这是该类向外界任何容器提供图形的唯一途径。

    图形曲线类定义该曲线的相关的属性,及由一个内存表提供的数据,包括X值和Y值。

    使用类中将图形曲线类逐个加载,逐个显示。因为图形曲线类中提供的数据是工程数据,我们要先将它转换为象素数据。这个转换公式,由基类里的TranslateX(float x)和TranslateY(float y)来完成。

    经过上面的折腾,我们可以来写写这个方案了。demo

  • 相关阅读:
    hbuilder中如何使用egit上传项目
    网络攻防第二周学习笔记
    sqlserver两表关联的更新
    ISAPI_rewrite中文手册
    Unity中C#单例模式使用总结
    Window Live Writer Test
    Spring Cloud 服务注册与发现(Eureka 找到了!找到了! 嘻嘻)
    Spring Cloud 服务消费与负载均衡(feign)
    Spring Cloud 服务消费与负载均衡(Rest + Ribbon )
    列表的响应式排版
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/917717.html
Copyright © 2020-2023  润新知