Avatar billede tjacob Juniormester
12. februar 2005 - 17:20 Der er 1 kommentar og
1 løsning

gdi32 API og Device Context problemer

Jeg har stirret mig totalt blind på dette problem.
Hvorfor virker dette ikke:

    Dim lBitmap As Long, lBitmap2 As Long
    Dim lTempDC As Long, lTempDC2 As Long
    Dim i As Long

     
    If Not GetStretchBltMode(frmMain.hdc) = HALFTONE Then Call SetStretchBltMode(frmMain.hdc, HALFTONE)
    i = RGB(255, 255, 255)
   
    lTempDC = CreateCompatibleDC(frmMain.hdc)
    lBitmap = frmMain.picSrc.Picture
    lBitmap = SelectObject(lTempDC, lBitmap)
    lTempDC2 = CreateCompatibleDC(frmMain.hdc)
    lBitmap2 = frmMain.picSrc.Picture
    lBitmap2 = SelectObject(lTempDC2, lBitmap)
   
    'krymper fra 30x30 til 20x20
    Call StretchBlt(lTempDC, 0, 0, 20, 20, frmMain.picSrc.hdc, 0, 0, 30, 30, vbSrcCopy)
   
    'flip vertikalt
    Call StretchBlt(lTempDC2, 0, 20, 20, -20, lTempDC, 0, 0, 20, 20, vbSrcCopy)
   
    'tegn transparent (hvid er maske)
    Call GdiTransparentBlt(frmMain.hdc, 200, 100, 20, 20, lTempDC2, 0, 0, 20, 20, i)
   
    frmMain.Refresh


-Hvis der kun er 2 'led' er der ingen problemer. Jeg kan sagtens tegne lTempDC på formen -uanset hvilken funktion det drejer sig om.

MVH tjacob
Avatar billede tjacob Juniormester
12. februar 2005 - 17:27 #1
Der er en lille 'typo' i 11'te textlinie:
lBitmap2 = SelectObject(lTempDC2, lBitmap) skulle være
lBitmap2 = SelectObject(lTempDC2, lBitmap2)

Dette ændrer ingenting... jeg skulle måske også nævne, at jeg naturligvis senere frigiver hukommelse med DeleteObject og DeleteDc
Avatar billede tjacob Juniormester
20. februar 2005 - 12:31 #2
Det var ikke mange svar efter 8 dage! ;-)

Kan ikke vente længere, og har fundet alternativ løsning, hvor der krympes
og flippes i en StretchBlt operation. (Jeg ville dog gerne stadig vide hvorfor
ovenstående ikke virker).

-Spm. lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester