采集到的数据的取值范围不是确定,要求可以根据采集的数据自动调整坐标系,而且要求可以缩放,应该怎么做?请各位大虾指教,最好有代码,我只会用vb,土土的说!

解决方案 »

  1.   

    用chart控件,可以自动调整坐标系
      

  2.   

    你可以在网上找一下trend控件,一个很好的实时图像控件.我自己还留有一个,你想要的话,发邮件给我:[email protected]
      

  3.   

    ''获取价格差.
        MySinglePriceChange = MySingleCurrentPrice - MySingleLastPrice    ''获取柱线的基准高和宽
        MySingleBasicHeight = MyPictureDrawColumn.Height / (MySingleHeightPrice - MySingleLowPrice) ' + 2000 * Len(MySingleHeightPrice)) ' - MySingleLowPrice + 2 * Len(MySingleHeightPrice)) 'MyIntegerWholeDrawStockNumber)
        MySingleBasicWidth = MyPictureDrawColumn.Width / MyIntegerWholeDrawStockNumber
        
        ''计算矩形的坐下角和右上角。
        MyIntegerFromX = -MySingleBasicWidth  '第一天的先从x=0处画。
        MyIntegerFromY = (MySingleLastPrice - MySingleLowPrice) * MySingleBasicHeight
        MyIntegerToX = MySingleBasicWidth + MyIntegerFromX
        If MyArrayBooleanPriceUpDown(2) Then
            MyIntegerToY = MySinglePriceChange * MySingleBasicHeight + MyIntegerFromY
        Else
            MyIntegerToY = MyIntegerFromY - MySinglePriceChange * MySingleBasicHeight
        End If
        
        ''当日涨用红柱,当日跌用绿柱.
        If MySinglePriceChange > 0 Then
            MyByteQBColor = 4       '上涨,保存红色值:4 红色
        Else
            MyByteQBColor = 2       '下跌,保存绿色值:2 绿色
        End If
        
        ''画矩形。
        'Line (MyIntegerFromX, MyIntegerFromY)-(MyIntegerToX, MyIntegerToY), QBColor(MyQBColor), BF
        
        For MyTempByteStock = (MyIntegerWholeDrawStockNumber - 2) To 1 Step -1
            MySingleLastPrice = MySingleCurrentPrice    'MySingleLastPrice获取上一天的价格.
            MySingleCurrentPrice = MyArrayIntegerWholeDrawStock(MyTempByteStock)     '获取应绘的股票价格.
            MySinglePriceChange = MySingleCurrentPrice - MySingleLastPrice      '获取价格差,决定柱线的颜色和方向.
        
            MyIntegerFromX = MyIntegerToX       '从上一条柱的结束点开始花.
            MyIntegerFromY = MyIntegerToY
            MyIntegerToX = MyIntegerFromX + MySingleBasicWidth
            ''判断柱线方向
            If MySinglePriceChange > 0 Then     '上涨
                MyIntegerToY = MySinglePriceChange * MySingleBasicHeight + MyIntegerFromY
                MyByteQBColor = 4       '上涨,保存红色.
            Else    '下跌.
                If MyByteQBColor = 4 Then       '昨日涨,近日向上画.
                    MyIntegerToY = Abs(MySinglePriceChange) * MySingleBasicHeight + MyIntegerFromY
                Else        '昨日跌,今日向下画
                    MyIntegerToY = MyIntegerFromY - Abs(MySinglePriceChange) * MySingleBasicHeight
                End If
            
                MyByteQBColor = 2   '下跌,保存绿色.
                
            End If
        
            'MyIntegerFromY = MyPictureDrawColumn.Height - MyIntegerFromY
            'MyIntegerToY = MyPictureDrawColumn.Height - MyIntegerToY
            'Debug.Print MyIntegerFromY; MyIntegerToY
            If MyPictureDrawColumn.Height - MyIntegerToY < 0 Then
                MsgBox (MyIntegerToY - MyIntegerFromY) * MySingleBasicHeight
            End If
            ''画柱线.
            MyPictureDrawColumn.Line (MyIntegerFromX, MyPictureDrawColumn.Height - MyIntegerFromY)-(MyIntegerToX, MyPictureDrawColumn.Height - MyIntegerToY), QBColor(MyByteQBColor), BF    Next MyTempByteStock
    这是我程序的一部分,还有点小bug但应该对你有帮助