http://skinart.y365.com/myprogram/gt.zip仅供参考...

解决方案 »

  1.   

    应该是这方面的东西了,可是运行后它把一些数据放在一个DAT里就完事了,我再启动程序它还是那个界面,这个到底要怎么用呢?(我先加载了一张图片,然后按“开始”,过了一会儿它说扫描完毕,然后我该怎么做呢?)
      

  2.   

    dat里面就是那些剪裁出来的座标,我的设计是把这些数据放在.gts皮肤文件的最后面...然后我的换皮肤程序运行时就从.gts文件中把这些数据读出来...这样就可以根据每个皮肤文件把窗体设成相应的形状了...
      

  3.   

    请告诉我把那个DAT读出来并引用的方法
      

  4.   

    可能吗!
    我们既不是作者又不是神仙(掐指一算,能知天下事)
    又没有那个Dat文件,无法分析
      

  5.   

    请“不当帮主”高人当一次救世主,把那个DAT的用法详细说说,我好给分。
      

  6.   

    Public Sub 不规则窗体()'************************************************************************************************************
    '皮肤文件最后一字节:0表不用,1表主窗口用点数不规则,2表条形窗体点数不规则,3表主窗体和条形窗体都用点数不规则
    '4表主窗口用组合矩形不规则,5表条形窗口用组合矩形不规则,6表主窗口和条形都用组合矩形不规则
    '
    '点数不规则:
    '倒数2,3表条形不规则区域的总点数
    '倒数4,5表主窗体不规则区域的总点数
    '
    '组合矩形不规则:
    '倒数2,3表条不规则的数据大小
    '倒数4,5,6,7表主窗体不规则的数据大小
    '************************************************************************************************************Dim 文件号 As Integer
    文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
        Dim 文件长度 As Long
        Dim 窗体模式 As Integer
        文件长度 = LOF(1)
        Get #文件号, 文件长度, 窗体模式
        If 窗体模式 = 0 Then
            SetWindowRgn frmmain.hwnd, 0, True
            Close #文件号
            Exit Sub
        End If
        If frmmain.mnumainws.Checked = True Then
            Call 条形不规则
        Else
            Call 主窗体不规则
        End If
    Close #文件号End SubPublic Sub 条形不规则()'MsgBox "条形不规则"
    Dim 文件号 As Integer
    文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
        Dim 文件长度 As Long
        Dim 窗体模式 As Integer
        文件长度 = LOF(文件号)
        Get #文件号, 文件长度, 窗体模式
        'MsgBox 窗体模式
        Select Case 窗体模式
            Case 2, 3
                Dim 点数 As Integer
                Dim 点数地址 As Long
                Dim temp As Integer
                Get #文件号, 文件长度 - 2, 点数
                点数地址 = (文件长度 - 4) - 点数 * 4
                Dim 点数数组() As POINTAPI
                ReDim 点数数组(点数 - 1) As POINTAPI
                For i = 0 To 点数 - 1
                    Get #文件号, 点数地址, temp
                    点数数组(i).x = temp
                    点数地址 = 点数地址 + 2
                    Get #文件号, 点数地址, temp
                    点数数组(i).Y = temp
                    点数地址 = 点数地址 + 2
                Next i
                rgn = CreatePolygonRgn(点数数组(0), 点数, 1)
                ReDim 点数数组(0) As POINTAPI
                SetWindowRgn frmmain.hwnd, rgn, True
                DeleteObject rgn
            Case 5, 6
                '如果是5,6那么用组合矩形的方法来进行
                Dim Ma As 矩形dat
                Dim 条形数据开始地址 As Long
                Dim 条形数据大小 As Integer
                Get #文件号, 文件长度 - 2, 条形数据大小
                条形数据开始地址 = (LOF(文件号) - 6) - 条形数据大小
                For i = 条形数据开始地址 To 条形数据开始地址 + 条形数据大小 - 1 Step 8
                    Get #文件号, i, Ma
                    If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
                    If rgn1 <> 0 Then
                        rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
                        CombineRgn rgn1, rgn1, rgn2, 2
                        DeleteObject rgn2
                    End If
                Next i
                SetWindowRgn frmmain.hwnd, rgn1, True
                DeleteObject rgn1
            Case Else
                '如果是其它那么设窗体为全显示
                SetWindowRgn frmmain.hwnd, 0, True
        End Select
    Close #文件号
    End Sub
    Public Sub 主窗体不规则()'MsgBox "主窗体不规则"
    Dim 文件号 As Integer
    文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
        Dim 文件长度 As Long
        Dim 窗体模式 As Byte
        文件长度 = LOF(文件号)
        Get #文件号, 文件长度, 窗体模式
        'MsgBox 窗体模式
        Select Case 窗体模式
            Case 1, 3
                'MsgBox "主窗体不规则"
                Dim 点数1 As Integer
                Dim 点数2 As Integer
                Dim 点数地址 As Long
                Dim temp As Integer
                Get #文件号, 文件长度 - 4, 点数1
                Get #文件号, 文件长度 - 2, 点数2
                点数地址 = (文件长度 - 4) - 点数1 * 4 - 点数2 * 4
                Dim 点数数组() As POINTAPI
                ReDim 点数数组(点数1 - 1) As POINTAPI
                For i = 0 To 点数1 - 1
                    Get #文件号, 点数地址, temp
                    点数数组(i).x = temp
                    点数地址 = 点数地址 + 2
                    Get #文件号, 点数地址, temp
                    点数数组(i).Y = temp
                    点数地址 = 点数地址 + 2
                Next i
                rgn = CreatePolygonRgn(点数数组(0), 点数1, 1)
                ReDim 点数数组(0) As POINTAPI
                SetWindowRgn frmmain.hwnd, rgn, True
                DeleteObject rgn
            Case 4, 6
                '如果是4,6那么用组合矩形的方法来进行
                Dim Ma As 矩形dat
                Dim 主窗体数据开始地址 As Long
                Dim 主窗体数据大小 As Integer
                Dim 条形数据大小 As Integer
                Get #文件号, 文件长度 - 2, 条形数据大小
                Get #文件号, 文件长度 - 6, 主窗体数据大小
                主窗体数据开始地址 = (LOF(文件号) - 6) - (主窗体数据大小 + 条形数据大小)
                For i = 主窗体数据开始地址 To 主窗体数据开始地址 + 主窗体数据大小 - 1 Step 8
                    Get #文件号, i, Ma
                    If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
                    If rgn1 <> 0 Then
                        rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
                        CombineRgn rgn1, rgn1, rgn2, 2
                        DeleteObject rgn2
                    End If
                Next i
                SetWindowRgn frmmain.hwnd, rgn1, True
                DeleteObject rgn1
            Case Else
                SetWindowRgn frmmain.hwnd, 0, True
        End Select
    Close #文件号
    End Sub