Svish Skrevet 26. september 2008 Del Skrevet 26. september 2008 Har et problem jeg ikke helt klarer å løse... Har en form med et bilde satt som BackgroundImage, og BackgroundImageLayout satt til Stretch. Det fungerer jo som det skal. Men! Når man resizer programmet, så følger ikke bakgrunnen med. Hvordan kan man få den til å gjøre dette smooth? prøvde å gjøre det ved å kjøre Refresh() på Formens ResizeEnd, men da ble det ikke resizet når man brukte maximize/restore. Det gjorde den derimot når jeg gjorde det samme med Formens Resize. Problemet da var at når brukeren resizer programmet ved å dra i kantene, så blir det en smule hakkete, da Formen Refresher en hel masse. Til slutt gjorde jeg følgende: private bool resizing = false; private void MainForm_ResizeBegin(object sender, EventArgs e) { resizing = true; } private void MainForm_Resize(object sender, EventArgs e) { if (!resizing) Refresh(); } private void MainForm_ResizeEnd(object sender, EventArgs e) { resizing = false; Refresh(); } Dette fungerer forsåvidt. Problemet er at Formen liksom får sånne hvite flash innimellom, noe som er meget plagsomt. For eksempel når en åpner en MdiChild form. Eller bytter tab eller åpner en meny. Eller bare helt random egentlig... Dessuten så lagger det noe helt fantastisk når man prøver å flytte på et sånt MdiChild vindu... men mulig det har med MdiChilds å gjøre, og ikke noe som er på grunn av dette? Uansett, noen som vet hvordan det "skal" gjøres? Hvordan bør denne oppgaven egentlig løses for at det skal fungere og fungere smooth? Lenke til kommentar
WhiteFire Skrevet 26. september 2008 Del Skrevet 26. september 2008 (endret) Hva med å kjøre refresh via eventene som oppstår etter maximize/restore i tillegg til resizeEnd? Endret 26. september 2008 av WhiteFire Lenke til kommentar
Svish Skrevet 26. september 2008 Forfatter Del Skrevet 26. september 2008 Ja, tenkte på det også her en gang, men fant ingen events som var til det? Eller har jeg bare oversett dem helt? Lenke til kommentar
GeirGrusom Skrevet 26. september 2008 Del Skrevet 26. september 2008 Du bruker Invalidate for å få noe til å tegne opp på nytt. Vet ikke hva problemet her er utover det, da jeg aldri har brukt bakgrunner i MDI forms før. Lenke til kommentar
Svish Skrevet 26. september 2008 Forfatter Del Skrevet 26. september 2008 Så en skal bruke Invalidate istedet for Refresh med andre ord? Lenke til kommentar
GeirGrusom Skrevet 26. september 2008 Del Skrevet 26. september 2008 Ja, men jeg vet ikke om det løser problemet ditt. Prøv også å bruke SizeChanged event istedet for ResizeEnd, dette måtte jeg gjøre når jeg laget Kodeeditoren min for utviklingsverktøyet mitt. hvis jeg trykket på Max knappen på tekstvinduet, tegnet ikke vinduet seg opp skikkelig. Det hjalp ikke med ResizeEnd, men å putte Invalidate() i SizeChanged så fikset det biffen. Lenke til kommentar
Svish Skrevet 29. september 2008 Forfatter Del Skrevet 29. september 2008 (endret) SizeChanged funket på begge ja, så takk for det tipset! Bakgrunnen ville ikke resize seg med Invalidate da. Måtte bruke Refresh() Jaja. Er ikke så nøye. Men om noen har flere ideer tar jeg dem gjerne Endret 29. september 2008 av Svish Lenke til kommentar
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å