zoukankan      html  css  js  c++  java
  • vB API 之 第八课 图像编程(一)

      画线函数

      LineTo(): 画直线

      PolyBezier() 画贝塞尔曲线

      PolyDraw(): 画多边形曲线

      Polyline 画线段

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

      参数

      hdc: Long  //设备的句柄

      x和y  Long   //线段的位置

    示例 

    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 

    示例 绘制贝塞尔曲线

    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
  • 相关阅读:
    北京除了木樨园哪里有卖布料的?要高级布料,不要那种便宜的小摊。
    郭培_百度百科
    木樨园批发市场淘布归来
    九头身美女_百度百科
    「花田对」CSDN程序员专场——谁来拯救技术宅!_豆瓣
    时间囊咖啡馆免费提供小型活动场地_豆瓣
    北京的布料市场
    适合入门自学服装裁剪滴书(更新ing)
    不说技术~2016-07-02我们是幸福的一家人
    插件~使用ECharts动态在地图上标识点~动态添加和删除标识点
  • 原文地址:https://www.cnblogs.com/delphi2014/p/4022671.html
Copyright © 2011-2022 走看看