如果问题比较简单,请谅解。此为本人毕业课题:
    如果存在一副有扫描仪扫好的曲线图,如何取得其各点的坐标?

解决方案 »

  1.   

    to cjy(cjy):
        坐标的建立、度量单位(应该是动态建立坐标,根据用户需要把坐标建立在什么地方而定。)
        
        问题:如何取点  (通过色差判断?)
      

  2.   

    利用Tcanvas中属性Pixels进行逐行像素判断,允许一定误差,若像素差别较大则记下坐标
      

  3.   

    使用TCanvas.Pixels属性
    TCanvas.Pixels属性是一个二维数组,它的每个元素代表窗体表面或客户区的一个像素的TColor值。
    窗体左上角的像素为:Canvas.Pixels[0,0];
    而右上角为:Canvas.Pixels{clientwidth,clientheight}
    一般情况下,很少需要访问窗体的单个像素,因此通常不需要用到Pixels属性,用它太慢了。如果使用GetPixel()和SetPixel()来访问像素,Microsoft也承认这两个函数有缺陷,效率不高,因为这两个函数都依赖于24位的R B值。如果不是24位R G B设备,当把R G B转换为设备像素格式时会出现颜色匹配失真。为了快速地操纵像素,可以使用TBitmap.Scanline数组。如果只是要一次获得或设置一两个像素,可使用Pixels属性。
      

  4.   

    坐标系统和映射模式大多数GDI函数需要指定坐标集,用来确定绘图的位置。这些坐标基于一个度量单元,诸如像素。通常,GDI以垂直方向和水平方向上的轴来定位,也就是说,通过增减X、Y *坐标值来移动绘图位置。Win32依赖于两个因素来执行绘图函数:坐标系统和映射模式。
    Win32坐标系统与任何其他坐标系统没有什区别。指定了一个点的X、Y坐标,Win32就在绘图表
    面定位这个点。Win32使用3种坐标系统,分别是设备、逻辑和通用坐标系。Windows 95不支持通用坐标系(位图旋转、裁剪、扭曲等)设备坐标系设备坐标系是指Win32运行于的设备。它以像素为单位进行度量,定位方向是水平轴从左右、垂直轴从上到下增加。例如,如果在640×480的显示器上运行Windows,设备左上角坐标为(0,0),而右下角坐标为(649,479)。逻辑坐标系在Win32中,有设备环境(或称DC)的区域通常使用逻辑坐标系。设备坐标系与逻辑坐标系的区别稍后解释。我们先从屏幕、窗体、窗体的客户区开始。
    屏幕坐标系
    屏幕坐标系是指显示设备,因此它是以像素为度量单位的坐标系,在6 4 0×4 8 0的显示器上,Screen.Width和Screen.Hight分别为640和480像素。要获取屏幕的设备环境,可以使用Win32 API中的GetDC()函数。相应地,必须调用RaleaseDC()函数来释放所获取的设备环境。窗体坐标系窗体坐标系也叫窗口坐标系,指整个窗体或窗口,包括标题栏和边框。Delphi5没有直接提供访问绘图区域DC的属性(不知现在有没有),但可以通过使用Win32 API中的GetWindowsDC()函数来获得DC。例如:MyDC: = GetWindowDC(Form1.Handle) ;这个函数返回指定窗口的设备环境。注意可以通过TCanvas对象来操纵由GetDC()和GetWindow()所获得的设备环境,进而通过设备环境来调用TCanvas的方法。你只要创建一个TCanvas实例,然后把GetDC()GetWindowsDC()的结果赋给TCanvas.Handle属性。这个方法可行,因为TCanvas拥有这个句柄,当画布对象释放时将释放该设备环境。窗体的客户区坐标是指窗体的客户区域,其设备环境为窗体画布的Handle特性,其尺寸可以由Canvas.ClientWidth和Canvas.ClientHeight获得。
      

  5.   

    to myling(阿德):
       非常感谢!
      

  6.   

    to myling(阿德):
       可否给个联系方式?QQ:434856