Hei!
Mustavalkoisen pienen bittikartan luonti:
Handle = CreateBitmap(Width, Height, 1&, 1&, 0&)
Värillisen bittikartan luonti:
Handle = CreateCompatibleBitmap(hDCfrom, Width, Height)
CreateBitmap Api on hyvä luomaan mustavalkoisia bittikarttoja. Ongelmaksi kuitenkin kehkeytyy niiden pieni sallittu koko. En tiedä tarkalleen missä kokoraja menee, mutta 150-170 pikselin leveys/korkeusarvojen tienoilla. Selvää kuitenkin on, ettei tämä postimerkin kokoinen läikkä riitä. CreateCompatibleBitmap sen sijaan luokin jo tyylikkään bittikartan hieman isompaankin tarpeeseen, mutta elämää suurempi kysymys on; miten sen saa mustavalkoiseksi? Tai jos sitä ei saa, miten voin luoda suuria kokoja tukevan mustavalkoisen bittikartan ?
EDIT: Poistin ylimääräisen partikkelin
Eikös tuo CreateCompatibleBitmap() luo oletuksena mustavalkoisen bittikartan, jos et anna sille parametriksi fyysistä ruudun DC:tä?
eli, jotain tälläistä:
hdc = GetDC(hWnd) hdcMem = CreateCompatibleDC(hdc) hBitmap = CreateCompatibleBitmap(hdcMem, 640, 480)
Jos tuolle CreateCompatibleBitmap() funktiolle antaisikin parametriksi hdc:n hdcMem:in sijaan, niin tuloksen pitäisi olla värillinen bittikartta.
Oikeassa olet, jalski! :)
Ei tullut mieleen käydä pelaamaan hWndn kanssa noin. Pienen säädön jälkeen sainkin kelvollisen funktion aikaan. Jaan sen kanssanne.
Private Function makeDC(hDC As Long, hDCfrom As PictureBox, Handle As Long, xHandle As Long, Width As Long, Height As Long, Optional mcB As Boolean) Dim tmpHandle As Long If Not mcB Then hDC = CreateCompatibleDC(tmpHandle) Handle = CreateCompatibleBitmap(hDC, Width, Height) xHandle = SelectObject(hDC, Handle) ElseIf mcB Then hDC = CreateCompatibleDC(hDCfrom) Handle = CreateCompatibleBitmap(hDCfrom.hDC, Width, Height) xHandle = SelectObject(hDC, Handle) End If End Function
EDIT: Korjasin turhuudet pois koodista, ja nyt se on hyvä. Ja koodi on hyvä silloin kun sen toiminnan lakkaa ymmärtämästä ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.