+ -
当前位置:首页 → 问答吧 → Bitblt导致无法用API绘图

Bitblt导致无法用API绘图

时间:2011-12-18

来源:互联网

去掉Bitblt那句代码,就能画出圆,加上却画不出。我已经用GetDC获得了窗体的场景,为什么复制场景后画不出图了,请问这是什么原因?
VB code

Option Explicit
Private Declare Function GetDC& Lib "user32" (ByVal hwnd As Long)
Private Declare Function Ellipse& Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long)
Private Declare Function ReleaseDC& Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long)
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Sub Command1_Click()
    Dim PicDC As Long
    Form1.AutoRedraw = True
    'BitBlt hdc, 0, 0, 1000, 1000, Picture1.hdc, 0, 0, vbSrcCopy
    PicDC = GetDC(hwnd)        '获取设备场景句柄
    Ellipse PicDC, 0, 0, 100, 100         '画空心圆
    ReleaseDC hwnd, PicDC     '释放设备场景
End Sub


作者: knightgy   发布时间: 2011-12-18

没人知道?

作者: knightgy   发布时间: 2011-12-19

应该是你的两个DC不是兼容的DC,你可以使用CreateCompatibleDC,创建一个和Me.hdc相兼容的DC再使用BitBlt

作者: Veron_04   发布时间: 2011-12-19