Gå til innhold

C#: BackgroundImage med Resize trøbbel


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 :D

Endret av Svish
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...