Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: BitBlt
Staszek




Typ: neutral
Postów: 46
Zarejestrowany: Dec 2003
BitBlt

Hej,
Potrzebuje funkcją bitblt ze zmiennej typu stdpicture wziąć i skopiować obrazek na formę. Problem tkwi w pobraniu uchwytu zmiennej. Mam taki o to kod. Po nacisnieciu klawisza w rogu pojawia sie kropka..

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 Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private bims(10) As New StdPicture
Private Const SRCCOPY = &HCC0020
Private Const SRCPAINT = &HEE0086
Private Const SRCAND = &H8800C6
Private RetVal As Long

Private Sub Command1_Click()
Dim mhc2 As Long
Set bims(1) = LoadPicture(App.Path & "/probny.bmp"
Set bims(2) = LoadPicture(App.Path & "/probny_mask.bmp"
mhc2 = CreateCompatibleDC(GetDC(bims(1).Handle))
'mDC = CreateCompatibleDC(bims(1).hdc)
'mDC = GetObject(bims(1), Len(bims(1)), bims(1))
RetVal = BitBlt(Form1.hdc, 20, 20, 50, 50, mhc2, 0, 0, SRCCOPY)
End Sub

Private Sub Form_Click()
Unload Me
End Sub

Bardzo prosze o pomoc !


_____________________________________________
PZdr. St ()

"Nie mysl jak napisac ! Mysl co napisac !" Swiete slowa .. Of corz moje =p

18-01-2005 17:58
Pokaż profil Staszek  Wyślij email do Staszek        2620939
Staszek




Typ: neutral
Postów: 46
Zarejestrowany: Dec 2003

halo ?


_____________________________________________
PZdr. St ()

"Nie mysl jak napisac ! Mysl co napisac !" Swiete slowa .. Of corz moje =p

19-01-2005 12:43
Pokaż profil Staszek  Wyślij email do Staszek        2620939
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

a nie mozesz poprostu zrobic tak:
Me.Picture = bims(1)

19-01-2005 18:34
Pokaż profil kicaj  Wyślij email do kicaj        3914568
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Moim zdaniem błąd lezy w linii:
mhc2 = CreateCompatibleDC(GetDC(bims(1).Handle))
.Handle w StdPicture to uchwyt bitmapy, nie okna (a tego wymaga funkcja GetDC).

Proponuję użyć funkcji SelectObject do powiązania bitmapy z DC (który też trzeba wcześniej stworzyć ). A potem użyć BitBlt podając uchwyt do tego DC.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

19-01-2005 20:37
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Staszek




Typ: neutral
Postów: 46
Zarejestrowany: Dec 2003

kicaj : nie bo nie moge miec nieskonczonej liczby pictureboxow.. a ladowanie do nich jest zbyt powolne. Potrzebuje duzo grafik

marcin: dzieki wlasnie o to chodzilo. thx za odpowiedz


_____________________________________________
PZdr. St ()

"Nie mysl jak napisac ! Mysl co napisac !" Swiete slowa .. Of corz moje =p

20-01-2005 11:24
Pokaż profil Staszek  Wyślij email do Staszek        2620939
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1