Jag använder Picture1.PaintPicture för att rita upp lite grafik i en picturebox. Men när grafiken uppdateras så flimrar det ganska så mycket... Ska man rita upp grafiken på något annat sätt? Kanske BitBlt? kolla hur många gånger den uppdateras det kan vara att skärmen uppdaterar annolunda och hinner inte med helt enkelt Jag läste något om detta i en gammal artikel från VBFA (Håkan Wennerberg) så om du lyckas få tag på dessa artiklar så löser du det nog. DirectX då? Visst du kan använda DirectX men det låter lite onödigt om det bara är lite grafik... Testa BitBlt först. DirectX har jag redan testat, men det går riktigt segt när man ritar i fönster... kör man fullskärm så är det kalasbra... Hej Igen Jag menade om tex ett annat program ligger ovanför (vilket fönster som helst), tex Internet Explorer, så blir det den grafiken man får... o det är juh inte så bra... Igen Nu tog jag bara IE som ett exempel... för att förklara hur grafiken grötar sig... Kolla bilden på http://www.kom-hit.nu/bitblt.jpg Hej Hmm... det var juh dåligt... finns det inget annat sätt att rita upp grafik då? En lätt lösning är väl bara att sätta AutoRedraw till True hos Picture1(källan)? Nja jag kan inte använda AutoRedraw... jag vill ändra grafiken beroende på vad användaren gör... så då kommer flimret tillbaka... (och när man har AutoRedraw = True så går det mkt segare att rita upp grafiken har jag märkt...) Om du flyttar en bild och det flimmrar kan man använda en BackBuffer......... men jag vet inte om det hjälper dig... :) Jo det borde fungera... men hur får jag det? (Det enda sättet jag vet nu är väl med DirectX... men det vill jag inte använda) Vet inte riktigt, men testa att lägga 2 bilder uppepå varandra och sedan uppdatera den som ligger unders :)Flimmer
ThomasSv: Flimmer
Sv: Flimmer
/SSv: Flimmer
Kanske är "lite" för mastigt för att sätta sig in i. Går ju inte på en dag, precis...Sv: Flimmer
Mvh. Johan Segolsson
E-post: johan.segolsson@home.se
Hemsida: http://softec.cjb.net/Sv: Flimmer
BitBlt försökte jag med men det vill inte fungera nå bra...
Jag har Picture1 som innehåller all grafik, och Picture2 där jag ska rita upp grafiken (o det är det som användaren ser)
Men då om det ligger ett annat fönster ovanför Picture1 så ritas det fönstret i Picture2 istället... om ni förstår hur jag menar... omöjligt o använda iaf...
Här är koden jag använder:
<code>
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
BitBlt Picture2.hDC, 0, 0, Picture2.ScaleWidth, _
Picture2.ScaleHeight, Picture1.hDC, 0, 0, _
vbSrcCopy
</code>Sv: Flimmer
Snabbt och kanske fel Men ! kolla att ändra Z order för
Picture1 Picture 2 så att det stämmer med dina önskemål
mvh
SvenSv: Flimmer
>Men då om det ligger ett annat fönster ovanför Picture1 så ritas det fönstret i Picture2 istället...
Då skall du ställa Picture1.ZOrder 0 '(noll) före du kör
BitBlitter köret
DSSv: Flimmer
ThomasSv: Flimmer
Förstår inte riktigt hur du kommer åt din
applikation om Internet Explorer ligger överst
men hur som helst då får du sätta den Form
som innehåller din applikation till ZOrder 0
Form1.ZOrder 0
DSSv: Flimmer
Ska testa det du sa... återkommer senare
ThomasSv: Flimmer
Där kopierar jag den vänstra bilden till den högra med bitblt.
Men om ni kollar på den nedre där jag har Winamp liggandes lite över den vänstra bilden så ser ni hur det blir... hur ska jag lösa det?
ThomasSv: Flimmer
Jag har kollat och det är helt klart att det
blir på detta sättet.BittBlittern jobbar med den
grafik layer som ligger överst.Om du testar
att flytta grundformen som pictureboxarna ligger i
åt höger på skärmen till en fri yta som inte störs
av andra objekt så kommer det att funka.
mvh
SvenSv: Flimmer
ThomasSv: Flimmer
Behövs ju också för Picture2(Destinationen), om man vill att den skall behålla sin bild efter man placerat ett fönster över den.
Nackdelen med att använda autoredraw på Picture2 är att man då är tvungen att göra en refresh på pictureboxen för att se resultatet.
Svamlar som vanligt, men hoppas detta är till nån hjälp... :O)
/Mvh, Andreas HillqvistSv: Flimmer
Går det inte o få en buffer som man ritar till och sen uppdaterar man från buffern till pictureboxen? (som DirectX)
ThomasSv: Flimmer
Sv: Flimmer
ThomasSv: Flimmer