vb.net c# 在picturebox中用GDI画图问题
大家好,请教一个困惑很久的问题,我想在vb.net或者C# 的picturebox控件中画一个折线图,面临如下问题:
1.坐标系转换
2.像素与x轴数字个数的关联问题
我不想使用ZedGraph或者MSChart解决此问题,从技术角度,还是想用GDI解决此问题
代码我写了一部分,需求在里面用注释的形式写下,新建一个工程后,拖一个按钮,一个picturebox.按钮中代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim w As Integer = PictureBox1.Width '图像宽度 单位:像素
Dim h As Integer = PictureBox1.Height '图像高度 单位:像素
Dim mybitmap As Bitmap = New Bitmap(w, h)
PictureBox1.Image = mybitmap
Dim Graph As Graphics '定义画布
Graph = Graphics.FromImage(PictureBox1.Image) '设置画布
Graph.Clear(Color.Black)
Dim arr(6) As Integer '定义一个7个数组成的数组
arr(0) = 200
arr(1) = 262
arr(2) = 88 '最小值
arr(3) = 422
arr(4) = 219
arr(5) = 333
arr(6) = 526 '最大值
'假设picturebox宽度是314,高度是212
'问题1:重新建立我们熟悉的坐标系,左下角为(0,0),右上角为(7,526),7是表示数组个数
'问题2:在此坐标系之上7个点连成一个折线图
'问题3:难道真的要手动计算每个点的像素位置吗?或者说坐标,比如左边第一个点的X轴坐标就是w/7,这样获得的是一个小数啊
'数据少的时候可以cint一下,误差还好.但是当arr这个数组的长度比较大的时候,比如9999,而picturebox的宽度比如是200的时候,误差也会越来越大
'有什么方法可以将数组的长度和picturebox的像素比较方便的结合起来或者不用我们去理会,就像过去vb6时
'可以使用 Picture2.Scale (x1, y1)-(x2, y2)一样比较方便的设置scale,而不用去考虑像素问题
'我不想使用zedgraph或者mschart这些控件,我相信应该有解决方法,因为这些控件的底层不也是按照GDI的原理画出来的吗
'谢谢大家!!!!!
End Sub