码迷,mamicode.com
首页 > Windows程序 > 详细

vB API 之 第八课 图像编程(一)

时间:2014-10-13 19:25:37      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   sp   

  画线函数

  LineTo(): 画直线

  PolyBezier() 画贝塞尔曲线

  PolyDraw(): 画多边形曲线

  Polyline 画线段

  LineTo()函数返回Long类型,返回0表示失败,不为0,则成功

  参数

  hdc: Long  //设备的句柄

  x和y  Long   //线段的位置

示例 

bubuko.com,布布扣

Option Explicit

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Dim Flag As Boolean


Private Sub Command1_Click()
    Flag = True
    
End Sub

Private Sub Command2_Click()
    Flag = False
    
End Sub

Private Sub Form_Load()
    Flag = False
    Me.ScaleMode = 3
    Me.Picture1.ScaleMode = 3
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Flag Then
        LineTo Me.Picture1.hdc, X, Y
    End If
    
End Sub

PolyBezier()、PolyBezierTo()函数描绘一条或多条贝塞尔曲线。

参数

  hdc: long    //设备的句柄

  lppt: POINTAPI结构,其中第一点指定了起点,其余三点为一组,指定控制一条曲线形状。

  CPoints: Long   // lppt数组的总数

  POINTAPI结构如下

Private Type POINTAPI 
    x As Long 
    y As Long 
End Type 

示例 绘制贝塞尔曲线

bubuko.com,布布扣

Option Explicit

Private Declare Function PolyBezier Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
Private Declare Function PolyBezierTo Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Dim flag1 As Boolean
Dim flag2 As Boolean
Dim pos(10) As POINTAPI
Dim i As Integer

Private Sub Command1_Click()
    flag1 = True
    flag2 = False
    
End Sub

Private Sub Command2_Click()
    flag1 = False
    flag2 = True
    
End Sub

Private Sub Command3_Click()
    flag1 = False
    flag2 = False
End Sub

Private Sub Command4_Click()
    Me.Picture1.Cls
    
End Sub

Private Sub Form_Load()
    flag1 = False
    flag2 = False
    Me.ScaleMode = 3
    Me.Picture1.ScaleMode = 3
    i = 0
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If flag1 Then
        pos(i).X = X
        pos(i).Y = Y
        If (i >= 3) Then
            PolyBezier Me.Picture1.hdc, pos(0), 4
            Me.Picture1.Circle (X, Y), 3
            i = 0
            Exit Sub
        End If
    End If
    If flag2 Then
        pos(i).X = X
        pos(i).Y = Y
        If (i >= 3) Then
            PolyBezierTo Me.Picture1.hdc, pos(0), 3
            Me.Picture1.Circle (X, Y), 3
            i = 0
            Exit Sub
        End If
    End If
    If (i <= 3) Then
        i = i + 1
        Me.Picture1.Circle (X, Y), 3
    End If            
End Sub

 

vB API 之 第八课 图像编程(一)

标签:style   blog   http   color   io   os   ar   for   sp   

原文地址:http://www.cnblogs.com/delphi2014/p/4022671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!