Jonas Skrevet 26. februar 2005 Skrevet 26. februar 2005 (endret) Heisann Edit: LØST. Se mitt andre innlegg. Saken er som følger: Jeg loader bilder fra PropertyBag. Det funker veldig bra, og jeg kan tegne den med denne koden: TransparentBlt frmRender.hdc, POINTAPI.x, POINTAPI.y, _ Cursor.Width, Cursor.Height, _ Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan Tingen er jo at jeg vil bruke DirectX til dette. Derfor bruker jeg GetDC og tegner på en surface: Cursor.ddsdSurface.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT Cursor.ddsdSurface.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Cursor.ddsdSurface.lWidth = Cursor.Width Cursor.ddsdSurface.lHeight = Cursor.Height Set Cursor.Surface = dx_draw.CreateSurface(Cursor.ddsdSurface) TransparentBlt Cursor.Surface.GetDC, 0, 0, Cursor.Width, Cursor.Height, Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan Når jeg da prøver å tegne på backsurfacen med denne koden, kommer det ingen ting opp: BackBuffer.Blt DestRect2, Cursor.Surface, DestRect, DDBLT_KEYSRC Noen som klarer å se hvor det skjærer seg og hvordan jeg retter det? Takker for hjelp! Jonas Edit: Hvis jeg prøver å TransparentBlt'e rett på BackBuffer.GetDC, så får jeg ikke flippet bufferet. Mulig det har noe med saken? Må noe "klargjøres" får jeg kan tegne på surfacen, akkurat som med .Cls? Endret 27. februar 2005 av Jonas
aadnk Skrevet 26. februar 2005 Skrevet 26. februar 2005 Problemet ligger i at GetDC()-funksjonen låser tavlen slik at den verken kan leses fra eller skrives til. Det du således må gjøre, er å låse den opp igjen med ReleaseDC(): tempDC = Cursor.Surface.GetDC TransparentBlt tempDC, 0, 0, Cursor.Width, Cursor.Height, Cursor.CursorHdc, 0, 0, Cursor.Width, Cursor.Height, vbCyan Cursor.Surface.ReleaseDC tempDC
Jonas Skrevet 27. februar 2005 Forfatter Skrevet 27. februar 2005 (endret) Takk aadnk! Nå har jeg enda et problem. (Som vanlig ) Edit: LØST. Jeg tegner masse forskjellige surfaces på en Backbuffer-surface. Problemet kommer når surfacens-posisjon gjør at bare halve skal tegnes. F eks når man drar musa helt nede på skjermen. Når noe skal tegnes litt utenfor, tegnes det ikke i det hele tatt! Det er jo gigantkrise. Hvordan løser jeg det? Endret 27. februar 2005 av Jonas
GeirGrusom Skrevet 28. februar 2005 Skrevet 28. februar 2005 du fant ut at du måtte bruke clipper? glimrende.
Jonas Skrevet 28. februar 2005 Forfatter Skrevet 28. februar 2005 Clipper? Hva er det? Nei, jeg endte opp med å endre på RECTen, slik at jeg bare tegnes det som trengte å tegnes. With DestRect .Top = Ikke over skjermen .Bottom = Ikke under skjermen osv, osv..
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå