shape 好像没有三角的形状

解决方案 »

  1.   

    用这个CreatePolygonRgn创建一个3角型区域
    用FillRgn去填充这个3角型
      

  2.   

    我的三角形是闭合区域,我也设了填充类型,可是怎么不能自动填充呢?
    希望大家教我。该三角形是用三次Line画出来的。
    记住3个点的坐标,利用API函数CreatePolygonRgn根据坐标建立
    三角形区域,使用API函数FillRgn填充这个区域 :Private Type POINTAPI
            X As Long
            Y As Long
    End Type
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End TypePrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, _
            ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
    Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, _
            ByVal hRgn As Long, ByVal hBrush As Long) As Long
    Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, _
            ByVal X As Long, ByVal Y As Long) As Long
    Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) _
            As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal _
            hObject As Long) As Long
    Private Declare Function GetLastError Lib "kernel32" () As LongConst ALTERNATE = 1
    Const WINDING = 2Dim hRgn As LongPrivate Sub Command1_Click()
        Dim xx(4) As POINTAPI
        Dim lB As Long
        Dim lOld As Long
        
        xx(0).X = 0: xx(0).Y = 0
        xx(1).X = 50: xx(1).Y = 0
        xx(2).X = 50: xx(2).Y = 50
        xx(3).X = 0: xx(3).Y = 50
        xx(4).X = 5: xx(4).Y = 25
        
        '建立不规则区域
        hRgn = CreatePolygonRgn(xx(0), 5, ALTERNATE)
        If hRgn <> 0 Then
            lB = CreateSolidBrush(RGB(255, 0, 0))
            '填充不规则区域
            Debug.Print FillRgn(Picture1.hdc, hRgn, lB)
        End If
    End Sub
      

  3.   

    用“Polygon”就行了!Polygon VB声明 
    Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long 
    说明 
    描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hdc Long,用于描绘的设备场景 
    lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构 
    nCount Long,多边形的总点数(顶点数) 
    注解 
    GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充
     
      

  4.   

    用“Polygon”就行了!Polygon VB声明 
    Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long 
    说明 
    描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hdc Long,用于描绘的设备场景 
    lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构 
    nCount Long,多边形的总点数(顶点数) 
    注解 
    GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充