我用picSheet.Scale (0, 200)-(100, -200)自己定义坐标,用Line划线时,是自己设定的坐标。但是用LineTo和MoveToEx划线时,自己定义的坐标却没用,为什么,谢谢了先 
picSheet.Scale (0, 200)-(100, -200) 
vDRP = MoveToEx(picSheet.hdc, xData(MAX), yData(MAX), vPt) 
vDRP = LineTo(picSheet.hdc, xData(MAX + 1), yData(MAX + 1)) 
这里X和Y都存储在数组xData和yData中,这2个坐标能统一么,谢谢了先!

解决方案 »

  1.   

    继续顶,来人啊,LineTo和Line坐标能统一么,API的坐标不能自己定义???
      

  2.   

    老兄,没有有搞错,这已经是我看到的第三个坐标转换的贴了.之前的回答中已经说过,只要你是用API来绘画,统统只认像素坐标,而不会看你的自定义坐标系.我觉得既然你无法避免要用到大量的API来绘画,何不废除你的自定义坐标系,而直接采用与屏幕一一对应的像素坐标呢??即使在你的程序数据中出现的数字范围和屏幕范围不同,也可以通过预处理,先变换成符合像素坐标系的数据,再来调用API输出呢?? 这样不是更方便么??
    举个例子:
    假设你的PICTURE画板的尺寸为400X300像素(即 0-399, 0-299)而你的数据来源是一千个范围在-100到5000的浮点数.
    那怎么处理呢?
    假设你是想横向将这一千个点画出一个曲线图.
    首先无论你用哪种自定义坐标,一千个点都是不可能在宽度为400的画板上全部显示出来的.
    那也很简单,你只能加上一个比例, 1000/400=2.5 ,也就是说你X方向要缩小2.5倍,
    而Y方向,你的数据范围是 5100,画板高300, 5100/300=17,也就是Y方向缩小17倍
    倍率有了,就可以预处理数据了
      

  3.   

    接上面
    假设你1000个数据放在数组A里面
    处理后的数据放到B数组里:CONST XRATIO=2.5
    CONST YRATIO=17
    DIM I AS LONG
    DIM X AS LONG
    DIM Y AS LONG
    DIM B(399) AS LONG
    FOR I=0 TO 999
       X=I * XRATIO
       Y=(A(I) + 100) * YRATIO
       B(X)= 299 - Y
    NEXT好了,一千个从-100到50000的数据已经转化成了400个0到299的数据了,你可以直接用API画到你的PICTURE上面去了.
    不难吧.
      

  4.   

    恩,要分清你是在用VB的函数还是API函数,只有VB的才认你设置的新坐标系统的。