返回信息流在下想在PictureBox中绘制曲线。
我在MainForm中放置了一个Button,一个PictureBox,还有一个TextBox。希望在:1.把数值输入到TextBox;2.点击Button,这两步之后在PictureBox中显示一个由我指定了位置的曲线。
在写代码时,单击Button这一事件会触发PictureBox.Refresh()这一方法,以强制触发PictureBox的Paint事件。
在PictureBox的paint事件下,我使用
Dim RedPen As New Pen(Color.Red, 1) '定义了红色画笔
'用for循环,循环画短线段。短线段连起来,就是一条曲线了。
If DrawCurveBoolean = True Then 'DrawCurveBoolean用来判断Button是否被按下
For n = 0 To 4100
Dim Point1 As New PointF(22.0F + n / 10, 100)
Dim Point2 As New PointF(22.0F + (n + 1) / 10, 100)
Dim CurvePoints As PointF() = {Point1, Point2}
e.Graphics.DrawCurve(RedPen, CurvePoints) '将两点连成线
Next
End if
我的问题是,每次当我重新在文本框中输入一个数值,并按下Button后,PictureBox中的曲线都会被重新绘制。问题是,我想比较前后两次曲线的位置的不同,所以要求前后两次画出的曲线可以同时显示。
哪位大牛可以指导一下,小弟将感激涕零。。。
这是一条镜像帖。来源:北邮人论坛 / dot-net / #1775同步于 2010/5/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
绘制曲线
wshh
2010/5/15镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
把点数据存起来,分成多组,比如分成前后两组,绘制的时候遍历该数组,
顺次画图就行了
每次button把点数据存入点分组中。
【 在 wshh (wsh) 的大作中提到: 】
: 在下想在PictureBox中绘制曲线。
: 我在MainForm中放置了一个Button,一个PictureBox,还有一个TextBox。希望在:1.把数值输入到TextBox;2.点击Button,这两步之后在PictureBox中显示一个由我指定了位置的曲线。
: 在写代码时,单击Button这一事件会触发PictureBox.Refresh()这一方法,以强制触发PictureBox的Paint事件。
: ...................
【 在 wshh 的大作中提到: 】
: 在下想在PictureBox中绘制曲线。
: 我在MainForm中放置了一个Button,一个PictureBox,还有一个TextBox。希望在:1.把数值输入到TextBox;2.点击Button,这两步之后在PictureBox中显示一个由我指定了位置的曲线。
: 在写代码时,单击Button这一事件会触发PictureBox.Refresh()这一方法,以强制触发PictureBox的Paint事件。
: ...................
真不容易,有个用VB的
以下是我的解决方法
1.全局声明一个Bitmap类和一个Graphics类变量
Private bmp As Bitmap
Private g As Graphics
2.在Form_Load方法里面实例化之
bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)
g = Graphics.FromImage(bmp)
3.在Button1_Click方法中使用如下语句(请自行改为你需要画的图形)
Dim r As New Random
g.DrawLine(Pens.Black, r.Next(PictureBox1.Width), r.Next(PictureBox1.Height), r.Next(PictureBox1.Width), r.Next(PictureBox1.Height))
PictureBox1.Image = bmp
4.无论点多少次,PictureBox里面的图都是累加,需要清空时,使用:
g.Clear(Color.Transparent)
PictureBox1.Image = bmp