Jag fick tag på en kontroll(www.codeproject.com/cs/media/wavecontrol.asp ) medvars hjälp man kan se vågformen i en ljudfil. suddar den ut allt bakom sig eller bara det sista steget? Det hjälpte inte med doevent. Jo det fungerade men inte bra. Om du sparar rektangeln som din linje gör gång så kan du väl använda dig av invalidate för att göra en återritning av bara just den biten... testa att göra något i stil med: du får samma problem med en egen kontroll som med en label,Bekymmer med etikett
Nu ville jag ha en "markör" som flyttar sig längs wav-kontrollen i takt med musiken.
Så här gör jag:
<code>
public float lTid = 0;
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
lTid ++;
Application.DoEvents();
linje.Left = 32 + Convert.ToInt32(lTid);
}
</code>
Etiketten (linje) flyttar sig som den skall, men den "suddar ut" vad som är skrivet i wav.kontrollen(den är troligen också en label).
Hur löser jag detta?Sv: Bekymmer med etikett
testa med doevents efter att du har flyttat linjen, alternativet är väl att tvinga en repaint på den underliggande labeln.Sv: Bekymmer med etikett
Jag den suddar ut allt under.
Hur kör jag en repaint?Sv: Bekymmer med etikett
Det tar en massa kraft att fylla wave-kontrollen och det påverkar när man sedan skall spela(lyssna).
Ja tror att jag tänker lite galet här, och vet inte riktigt hur jag skall vända på det.
Jag ber att få återkomma.Sv: Bekymmer med etikett
Roggan är väl annars en stjärna på grafiska grejer...Sv: Bekymmer med etikett
<code>
...
Point oldpos=new Point (0,0);
bool IsFirst=true;
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (!IsFirst)
ControlPaint.FillReversibleRectangle (new Rectangle (oldpos.X,oldpos.Y,2,100),Color.White);
else
IsFirst=false;
lTid ++;
Point pos=wav.Parent.PointToScreen (wav.Location);
pos.x+=lTid;
ControlPaint.FillReversibleRectangle (new Rectangle (pos.X,pos.Y,2,100),Color.White);
oldpos=pos;
}
</code>
där "wav" är din wav kontroll.
vad koden gör är att den ritar en reversibel rektangel där strecket ska vara
i nästa "tick" så suddar den strecket på förra positionen och ritar ett nytt streck..
//RogerSv: Bekymmer med etikett
om wav kontrollen inte är gjord för att kunna refresha sin yta så får man setill att ytan inte blir övermålad.
//Roger