BlårandMedlem sedan jan. 20032 356 inlägg Har på skoj gjort en funktion i VB som gör att man på bildskärmen kan svänga runt med en liten bil. Man kan växla till olika hastigheter, backa, och lalla runt lite på skärmen. Har gjort detta enbart på skoj, och med förhoppning att jag ska kunna lära mig lite grafikhantering i VB.
Har på min form lagt upp en image. Den imagen styr jag runt på skärmen med hjälp av piltangenterna. Beroende på vilken riktning jag far med bilen, så laddas en ny bild till den aktuella imagen. Den nya bilden som ska laddas hämtas från andra imager på formen. Se bilden nedan:
http://member.webforum.nu/Bl�rand/wF-car.gif
På så viss ser det ganska bra ut när man åker runt med bilen på skärmen. Det blir ganska mjuk grafik, och jag är ganska nöjd med mitt expriment. Nu undrar jag följande:
-
Ibland kan bilden bli lite flimmrig när man åker runt på skärmen. Har fått rådet att använda BitBlt när jag skiftat/laddar bilderna. Har letat i hjälpen efter pedagogiskt exempel på BitBlt, samt kikat på nätet utan resultat.
Finns det någon som skulle kunna beskriva hur jag använder BitBlt när jag ska ladda och visa bilder på en form?
-
Om jag tar ut placeringen för ded över vänstra hörnet på den imagen som rör sig på skärmen, hur gör jag för att ta reda på om denna punkt, rör sig över exempelvis en specifik punkt på formen, eller tar reda på vilken färg en specifik punkt på formen har?
-
Finns det möjlighet att enbart kunna ha en bild på en bil på formen, och att man sedan roterar bilden, så att man då slipper ladda nya biler till den aktuella imagen? Är det ett bra alternativ?
//Blårand
nikoMedlem sedan juni 20022 599 inlägg Eftersom grafikprogrammering inte är min starka sida så svarar jag lite korthugget ..
Ibland kan bilden bli lite flimmrig när man åker runt på skärmen. Har fått rådet att använda BitBlt när jag skiftat/laddar bilderna. Har letat i hjälpen efter pedagogiskt exempel på BitBlt, samt kikat på nätet utan resultat.
Att skapa grafik genom att flytta runt imagekontroller eller pictureboxar är så klart ingen hållbar lösning om man vill
åstadkomma mer avancerade grejer typ spel och så. Då är det betydligt bättre och snabbare att använda API:et.
Fast så särskilt svårt att hitta exempel om man söker på tex vb, bitblt på google är det väl inte?
http://www.interfold.com/rabit/TomsZone/Visual Basic/Tips/RS9803.htm
hur gör jag för att ta reda på om denna punkt, rör sig över exempelvis en specifik punkt på formen
Om du blittar så vet du ju garanterat koordinaterna för det du blittar och då är det väl inte så svårt att jämföra det med en redan känd koordinat på formuläret?
eller tar reda på vilken färg en specifik punkt på formen har?
GDI-funktionen getpixel returnerar RGB-värdet för en given punkt: http://tannerhelland.tripod.com/VBGraphicsTutorial.htm.
Finns det möjlighet att enbart kunna ha en bild på en bil på formen, och att man sedan roterar bilden, så att man då slipper ladda nya biler till den aktuella imagen? Är det ett bra alternativ?
Vad jag vet så finns det inget sätt att direkt via Windows-API:et rotera en bitmap? Däremot så kan man själv skriva en sån funktion. Här är ett C++-exempel som borde gå att överföra till VB: http://www.codeguru.com/gdi/rotblt.html.
Om det är ett bra alternativ beror nog lite på hur många tänkbara positioner av bilden som finns. Har du bara ett litet antal vinklar så är det så klart mer optimalt att ha en bitmap för varje än att utföra beräkningen/rotationen i realtid.
Om du sen vill dyka ännu djupare än Windows-API.et (GDI:n) så rekommenderar jag att du tittar på hur man kan använda DirectX i VB:
http://www.directxfaq.com/kbase/general/vbdx.htm
http://www.traksys.freeuk.com/directx/
BlårandMedlem sedan jan. 20032 356 inlägg Tack för svaren Niko! :)
Fast så särskilt svårt att hitta exempel om man söker på tex vb, bitblt på google är det väl inte?
För en nybörjare på VB kan det vara svårt att hitta pedagiska exempel, där man förklarar på ett bra sätt vad som händer och sker. Man kan hitta många exempelkoder, men som nybörjare ville jag gärna ha ett pedagogiskt exempel, så att jag förstår vad jag gör.
Tycker din länk var ok, och tackar för den :)
Om du blittar så vet du ju garanterat koordinaterna för det du blittar och då är det väl inte så svårt att jämföra det med en redan känd koordinat på formuläret?
Vet man vilket kommando man ska använda så är det inte svårt. Men för en nybörjare som inte har full koll på vilka kommandon man ska använda, eller vilka som finns tillgängliga kan det ibland bli klurigt. Har klurat en hel del för att få ihop saker som ni erfarna utvecklare tycker är självklarheter :)
Om du sen vill dyka ännu djupare än Windows-API.et (GDI:n) så rekommenderar jag att du tittar på hur man kan använda DirectX i VB:
Bra, tack för länkarna.
//Blårand