Tidslinje i VB6 - Problem

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Tidslinje i VB6 - Problem

Inlägg av Cenorpa »

Håller på och knåpar med ett projekt som aldrig vill bli klart och behöver lite hjälp då jag vet att det finns många duktiga programmerare här.


Programmet som jag håller på och programmerar ska ha en tidslinje med ett par spår där man kan lägga upp olika block ungifär som i ett redigeringsprogram där man lägger upp videoklippen.
Och det är här jag vill ha lite hjälp hur man ska göra själva "blocken". Nu har jag för tillfället löst det som så att varje block är en knapp som ändrar position på tidslinjen men det är lite jobbigt att hålla på och sätta ut knappar så hur kan man lösa det på något annat sätt?

Det ska finnas möjlighet att placera ut minst 500st block.

Storleken på blocken ska vara lika stora och jag vill hellst att man ska kunna dra runt dom på tidslinjen. (Dra och släpp)

Kolla nuvarande tidslinje:
http://marcuslindh.unx.se/bilder/timeline.jpg


Problem2:

Som tidsbas för tidslinjen har jag nu en timer men jag tycker inte att den är särskilt exakt, vet ej vad det beror på.
Om jag använder mitt program på min gamla laptop (300Mhz cpu) så går timern nästan dubbelt så fort :?

Detta gör att jag inte kan använda programmet på min stationära dator och flytta över sparade filer ur programmet till laptopen för då blir blocken helt felplacerade.

Behöver altså få programmet att gå mer exakt.


Problem3:

Har man en tidslinje så måste man ju såklart ha ett räkneverk och som det är nu så har jag byggt upp det med hjälp av ett par variabler och tiden lagras i en sträng som visas m.h.a en label.
Dock så flimmrar denna vid uppdatering och dessutom så går den fel p.g.a problem 2.

Behöver altså en bättre räknare på något sätt


Hoppas ni förstår mitt rop på hjälp :)

[Edit] ändrade om lite
farskost
Inlägg: 454
Blev medlem: 17 april 2006, 19:55:21
Ort: Mölndal

Inlägg av farskost »

För att få mer exakt tidsangivelse får du nog ta och kolla på systemklockan istället för en timer.

//Robin St
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Problem1: rita mha GDI eller DirectX på en yta, direkt på formuläret eller en
picturebox. Koden för dra och släpp får du programmera själv. Skapa en
box-klass och en collection med box-instanser.

Problem2: se mitt inlägga i denna tråd: http://elektronikforumet.com/forum/view ... %2A#157603

Problem3: uppdatera labeln mer sällan, var 100ms t.ex.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Jag har faktiskt aldrig ritat med hjälp av GDI eller DirectX i vb så jag skulle vara tacksam över lite mer information om det.
Sitter och googlar lite om det men skulle vara bra om du kunde visa något enkelt exempel eller berätta lite mer.

Problem2:
Ska läsa igenom tråden.

Problem3:
Jag har för mig att jag sett någonstans förut att man ska kunna uppdatera en ?label? så att den bara uppdaterar texten där den har ändrats, och inte hela som den normalt gör.

Någon som vet mer om det?
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Jag slängde ihop ett exempel med de inbyggda grafikfunktionerna i vb: boxes.zip 11kB.

Om du vill ge dig på GDI så kolla på funktionerna FillRect, DrawText m.fl. i win32 programmers reference5,4MB
Senast redigerad av pheer 25 mars 2012, 19:22:25, redigerad totalt 2 gånger.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Tack!

Jag kollade lite på exemplet och koden men har inte riktigt förstått allting än men det ser bra ut, designen på "lådan" är väl kanske inte så jättehärlig :D

Om jag har förstått det rätt så är lådan uppbyggd av vanliga linjer i pictureboxen?

Hur skulle man kunna göra för att få det att se lite snyggare ut?

Ungefär som någon av dessa blocken:

http://marcuslindh.unx.se/bilder/timelines.jpg

Kanske lite väl avancerat men det kanske går om man gör en separat "låda" för varje nyans? (syftar på den vänstra bilden)



Angående "MainLoop" så använder du GetTickCount, det ger väl stabilare gång än en timer vilket jag borde kunna använda?


Mycket frågor, men man får ju så bra svar här så det är lika bra att fråga på :)
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Vadå, de är väl jättefina? :)

Jepp, linjer stämmer bra.

Snyggare? Såhär.
Bakgrundsfärgen hittar du i funktionen redraw i box-klassen. Den går
såklart att lägga som argument i init() eller i någon annan funktion.

GetTickCount kan du använda.

Frågor är bra för jag är trött på mina egna projekt. Nu blir jag nästa sugen
på att göra en egen timeline-klass. Men jag vet inte vad jag skulle ha den till.

edit: länkade till gamla först, är rätt länk nu
Senast redigerad av pheer 25 mars 2012, 19:22:00, redigerad totalt 2 gånger.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

>Nu blir jag nästa sugen
på att göra en egen timeline-klass. Men jag vet inte vad jag skulle ha den till.

Om du inte hittar på nått att göra med den så kan du ju alltid skicka den till mig så löser sig det problemet :D

Jag får iaf tacka så mycket för hjälpen än sålänge!
Det kommer säkert mer frågor men nu ska jag försöka och greja lite själv.


Nu såg ju lådan lite bättre ut iallafall, nästan som en knapp...
Eller det kanske är en knapp och du har tagit mig tillbaka på ruta ett! :lol:

Vad har du ändrat för något för att texten i lådan inte flimmrar som den gjorde i första versionen?
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

haha, den är ritad precis som en knapp :)

I första versionen ritades boxarna upp på nytt hela tiden direct på picture-boxen.
I v2 ritades boxarna (med gdi) en gång i en buffer. Sedan ritades
buffertarna på pic-boxen. Lite effektiver och lite mindre flimmer.

I v3 ritas boxarna
på en buffer som sedas kopieras till pic-boxen. På så sätt slipper man
flimmer helt och hållet.
Senast redigerad av pheer 25 mars 2012, 19:21:44, redigerad totalt 1 gång.
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Den är långt ifrån färdig men den börjar ta lite form nu :)
Jag har gjort den som en ocx-kontroll (källkod bifogad i zip-fil). Nytt är bl.a. "fält" och effektivare drag n drop.
Senast redigerad av pheer 25 mars 2012, 19:21:28, redigerad totalt 1 gång.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Tack!
Ser bra ut det där :)

Måsta kolla igenom allt och sen försöka göra något liknande till min egna applikation.

Lite jobbigt när man har flera projekt pågående parallellt med varandra så jag har inte kodat så mycket med tidslinjen men jag ska försöka få lite tid med det den här veckan.
Skriv svar