怎样在一幅图片上绘画图形(例如坐标轴)???

hareluya_no_1 2004-10-05 10:34:22
怎样在一幅图片上绘画图形(例如坐标轴)???
...全文
1119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2004-10-06
  • 打赏
  • 举报
回复
呵呵,vb提供了一些基本的语句,如pset(画点),line(画线)circle(画圆、椭圆或弧线),灵活的运用它们就可以了
laisiwei 2004-10-06
  • 打赏
  • 举报
回复
画各种直线和形状


尽管清除绘图区和画出单个的点是有用的,但最有趣的图形方法是画完整的直线和形状。

画直线
为了在两个坐标点之间画一条直线,可使用 Line 方法的简单形式,其语法如下:

[object.]Line [(x1, y1)]–(x2, y2)[, color]

其中 Object 是可选择的;若省略,此方法将在代码所连接的窗体(当前窗体)上画线。第一对坐标也是可选的。就所有的坐标值来说,x 和 y 参数都既可以是整数,也可以是分数。例如,下列语句可在窗体上画一条斜线。

Line (500, 500)–(2000, 2000)

Visual Basic 所画出的一条直线,要包括第一个端点,而不是最后一个端点。这种行为在从点到点画封闭曲线时是有用的。为了画最后一个端点,应使用这种语法:

PSet [Step] (0, 0)[, color]

第一对坐标 (x1, y1) 是可选的。如果省略这些坐标,将把该对象的 x,y 当前位置(画图坐标)作为端点。当前位置是由 CurrentX 和 CurrentY 属性指定的,然而在其它情况它会等于以前的图形方法或 Print 方法所画最后点的位置。如果以前没有使用过图形方法或 Print 方法,或没有设置 CurrentX 和 CurrentY 属性,则缺省位置为对象的左上角。

例如,以下语句通过三点连接画出一个三角形。

'设置起点的 x 坐标。
CurrentX = 1500
'设置起点的 y 坐标。
CurrentY = 500
'向起点的右下方画一直线。
Line -(3000, 2000)
'向当前点的左方画一直线。
Line -(1500, 2000)
'向右上方画一直线到起点。
Line -(1500, 500)

图 12.14 显示运行的结果

图 12.14 用 Line 方法画出的三角形



Blanker 应用程序使用 Line 方法创建出了一些有趣的图案样式。为了看到这些图案,可从“选项”菜单中,选定“Crossfire”,然后选定“Start Demo”按钮,即可看到。

Step 关键字
PSet、Line、和 Circle 方法使用以下语法可指定一个或多个点:

(x, y)

可在每个点之前加上 Step 关键字,用来指定要画出的点,是相对最后画出点的位置。Visual Basic 要将 x 和 y 的值加到最后所画的点上。例如,下边这条语句:

Line (100, 200)–(150, 250)

等价于:

Line (100, 200)–Step(50, 50)

在许多情况下,Step 关键字可免除持续不断地记录最后所画点位置的负担。经常最为关心的可能是两点的相对位置,而不是它们的绝对位置。

使用颜色参数
为了改变直线的颜色,应将可选的 color 参数与图形方法一起使用。例如,下述语句将画一条深蓝色的直线:

Line (500, 500)–(2000, 2000), RGB(0, 0, 255)

如果省略了 color 参数,将使用在其上画线的对象的 ForeColor 属性,来决定直线的颜色。
laisiwei 2004-10-06
  • 打赏
  • 举报
回复
PSet 方法


将对象上的点设置为指定颜色。

语法

object.PSet [Step] (x, y), [color]

PSet 方法的语法有如下对象限定符和部分:

部分 描述
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字,指定相对于由 CurrentX 和 CurrentY 属性提供的当前图形位置的坐标。
(x, y) 必需的。 Single (单精度浮点数),被设置点的水平( x 轴)和垂直( y 轴)坐标。
color 可选的。Long (长整型数),为该点指定的 RGB 颜色。如果它被省略,则使用当前的 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。


说明

所画点的尺寸取决于 DrawWidth 属性值。当 DrawWidth 为 1,PSet 将一个像素的点设置为指定颜色。当 DrawWidth 大于 1,则点的中心位于指定坐标。

画点的方法取决于 DrawMode 和 DrawStyle 属性值。

执行 PSet 时,CurrentX 和 CurrentY 属性被设置为参数指定的点。

想用 PSet 方法清除单一像素,规定该像素的坐标,并用 BackColor 属性设置作为 color 参数。

这个方法不能用在 With匛nd With 语句块中。
guxizhw 2004-10-06
  • 打赏
  • 举报
回复
Private Sub DrawCordinate(ByVal dbStartX As Double, ByVal dbEndY As Double, ByVal dbStep As Double, Optional ByVal blnDate As Boolean = True, Optional ByVal blnRubber As Boolean = False)
''这个用来画坐标
''起始的横坐标,终点的纵坐标,步长

Dim dbPos As Double

Dim intCount As Integer

Dim intDay As Integer

Dim strDate As String

Dim dbLittleMove As Double

strDate = Me.TxtDayBegin.Text ''取得开始日期的值

intDay = Day(strDate) ''取得天数,显示

dbPos = dbStartX ''取得开始位置

intCount = 0

While dbPos <= (cLineLength + dbStartX)

If Not blnRubber Then

Me.Line (dbPos, dbEndY - cLittleMove)-(dbPos, dbEndY), cForeColor ''画竖直的坐标线

Else

Me.Line (dbPos, dbEndY - cLittleMove)-(dbPos, dbEndY), cBackColor ''画竖直的坐标线

End If

If blnDate Then

dbLittleMove = Me.TextWidth(intDay) / 2

Me.CurrentX = Me.CurrentX - dbLittleMove

Me.Print intDay ''打印出日期,作为横坐标

Else


End If

dbPos = dbPos + dbStep

intCount = intCount + 1

strDate = DateAdd("d", 1, strDate)

intDay = Day(strDate)

Wend

If Not blnRubber Then

Me.Line (dbPos, dbEndY - cLittleMove)-(dbPos, dbEndY), cForeColor ''画竖直的坐标线

Me.Line (dbStartX, dbEndY)-(dbStartX + intCount * dbStep, dbEndY), cForeColor

Else

Me.Line (dbPos, dbEndY - cLittleMove)-(dbPos, dbEndY), cBackColor ''画竖直的坐标线

Me.Line (dbStartX, dbEndY)-(dbStartX + intCount * dbStep, dbEndY), cBackColor

End If

If blnDate Then

dbLittleMove = Me.TextWidth(intDay) / 2

Me.CurrentX = Me.CurrentX - dbLittleMove

Me.Print intDay

End If

End Sub

你随便参考一下吧,我画座标的,每个座标是一个月份的日子.比如1~31
lxcc 2004-10-05
  • 打赏
  • 举报
回复
Const pi = 3.14159

Dim a

Private Sub Command1_Click() '画正弦曲线

'首先清除picture1内的图形

Picture1.Cls

'Scale方法设定用户坐标系,坐标原点在Picture1中心

Picture1.ScaleMode = 0

Picture1.ScaleMode = 3

Picture1.Scale (-10, 10)-(10, -10)

'设置绘线宽度

Picture1.DrawWidth = 1

'绘坐标系的X轴及箭头线

Picture1.Line (-10, 0)-(10, 0), vbBlue

Picture1.Line (9, 0.5)-(10, 0), vbBlue

Picture1.Line -(9, -0.5), vbBlue

Picture1.ForeColor = vbBlue

Picture1.Print "X"

'绘坐标系的Y轴及箭头线

Picture1.Line (0, 10)-(0, -10), vbBlue

Picture1.Line (0.5, 9)-(0, 10), vbBlue

Picture1.Line -(-0.5, 9), vbBlue

Picture1.Print "Y"

'指定位置显示原点O

Picture1.CurrentX = 0.5

Picture1.CurrentY = -0.5

Picture1.Print "O"

'重设绘线宽度

Picture1.DrawWidth = 2

'用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果

For a = -4 * pi To 4 * pi Step pi / 6000

Picture1.PSet (a, Sin(a) * 5), vbRed

Next

'指定位置显示描述文字

Picture1.CurrentX = pi / 2

Picture1.CurrentY = -7

Picture1.ForeColor = vbBlack

Picture1.Print "正弦曲线示意"

End Sub


zgvslch 2004-10-05
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.Line (Picture1.Top + 500, Picture1.Top)-(Picture1.Top + 500, Picture1.Left + Picture1.Height)
Picture1.Line (Picture1.Top, Picture1.Left + 500)-(Picture1.Top + Picture1.Width, Picture1.Left + 500)

End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧