這個問題我百度了很久,也沒查到這個函式,及函式的具體用法。
我參考畫圓的函式試著宣告了這樣的畫扇形函式
畫圓的函式:Public Declare Function GdipDrawEllipseI Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Long, ByVal y As Long, ByVal Width As Long, ByVal Height As Long) As GpStatus
沒查到畫扇形的函式,我試著湊了一個:Public Declare Function GdipDrawPie Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Single, ByVal y As Single, ByVal Width As Single, ByVal Height As Single, ByVal X3 As Long, ByVal Y3 As Long) As GpStatus居然沒有報錯,但是,結果卻畫出了一個圓。
苦逼啊,有哪位高手可以求解嗎?我的郵箱是[email protected] QQ 1002031672
Public Sub 畫圓(hDc As Long, ByVal 圓心X As Long, ByVal 圓心Y As Long, ByVal 寬度 As Long, ByVal 高度 As Long, _
ByVal 度起點 As Long, ByVal 度終點 As Long, ByVal 框線粗細 As Long, ByVal 線條型別 As 線條型別_m, ByVal 邊框色 As Long, ByVal 填充色 As Long)
Dim pBrush As Long, pPen As Long
Dim X1 As Long, X2 As Long, X3 As Long, x4 As Long
Dim Y1 As Long, Y2 As Long, Y3 As Long, y4 As Long
Dim A As Single
If 填充色 < 0 Then
Call Arc(hDc, X1, Y1, X2, Y2, X3, Y3, x4, y4)
Else
Call Pie(hDc, X1, Y1, X2, Y2, X3, Y3, x4, y4)
End If
Call DeleteObject(SelectObject(hDc, pBrush))
Call DeleteObject(SelectObject(hDc, pPen))
End Sub
uj5u.com熱心網友回復:
半透明,可以先將扇形畫到,P2,然后用
Public Function 半透明復制圖2(ByVal 目標DC As Long, ByVal x目標 As Long, ByVal y目標 As Long, ByVal w目標 As Long, ByVal h目標 As Long, ByVal 源DC As Long, ByVal x源 As Long, ByVal y源 As Long, ByVal w源 As Long, ByVal h源 As Long, ByVal 透明度百分比 As Long) As Long
Dim lngBlend As Long
'lngBlend = Val("&h" & Hex(透明度) & "00" & "00")
lngBlend = RGB(0, 0, 255 - 2.55 * 透明度百分比)
AlphaBlending 目標DC, x目標, y目標, w目標, h目標, 源DC, x源, y源, w源, h源, lngBlend
End Function
P2 半透明復制到P1顯示就可以了, Picture1 是顯示用,Picture2隱藏
uj5u.com熱心網友回復:
研究了一下,搞定了。
把圖片保存下來,修改后綴為ZIP即可解壓看到工程檔案。
uj5u.com熱心網友回復:
我奉勸這位仁兄凡是涉及到帶alpha通道的半透明圖形繪制還是早日放棄GDI,改用GDI+吧……
uj5u.com熱心網友回復:
me4405801 樓上的乃高人啊,測驗完畢,基本是我想要的啊,非常感謝。保持聯系啊!
uj5u.com熱心網友回復:
再次感謝樓上的,我仔細閱讀了你的程式,你的扇形宣告函式
Public Declare Function GdipDrawPieI Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Long, ByVal y As Long, ByVal Width As Long, ByVal Height As Long, ByVal startAngle As Single, ByVal sweepAngle As Single) As GpStatus
我的自己瞎拼湊的扇形宣告函式
'Public Declare Function GdipDrawPie Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Single, ByVal y As Single, ByVal Width As Single, ByVal Height As Single, ByVal X3 As Long, ByVal Y3 As Long) As GpStatus
問題出在形參名稱和型別都對不上。
Public Declare Function GdipDrawPieI Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Long, ByVal y As Long, ByVal Width As Long, ByVal Height As Long, ByVal startAngle As Single, ByVal sweepAngle As Single) As GpStatus
我的自己瞎拼湊的扇形宣告函式
'Public Declare Function GdipDrawPie Lib "gdiplus" (ByVal Graphics As Long, ByVal pen As Long, ByVal x As Single, ByVal y As Single, ByVal Width As Single, ByVal Height As Single, ByVal X3 As Long, ByVal Y3 As Long) As GpStatus
問題出在形參名稱和型別都對不上。