webForumDet fria alternativet

Problem med grafik i windowsapplikation

.NETur .NET

7 svar · 590 visningar · startad av anno

Medlem sedan nov. 2000213 inlägg
Frågan#1

Jag har lite problem med grafik som jag ritar ut i min windowsapplikation. Från första början när fönstret öppnas så ritas grafiken ut korrekt. Dock försvinner grafiken om man trycker på någon av knapparna ALT eller TAB.

Klickar man sedan på något i fönstret så kommer grafiken tillbaka. Skulle man sedan klicka på ALT eller TAB igen så fungerar det korrekt. Så problemet är just första gången man klickar på någon av dessa knappar.

Någon som har någon idé på vad som kan vara fel?

Medlem sedan jan. 20012 204 inlägg
#2

Tja tab kanske tabbar till någon annan kontroll, som gör att det ändras. Alt kanske akiverar "arkiv-menyn".

Medlem sedan nov. 2000213 inlägg
#3

Precis, det är det som händer. Men borde inte grafiken ligga kvar även om man trycker på ALT och Arkiv-menyn aktiveras?

Medlem sedan dec. 2005664 inlägg
#4

Var ritar du ut grafiken, du ska göra detta i paintmetoden för den kotroll du ritar på.

r: då kallas den metoden varje gång det "behövs" och din grafik blir kvar!

Medlem sedan juni 20008 205 inlägg
#5

Min erfarenhet av att rita "egen" grafik i WinForms-kontroller kan sammanfattas med ett ord, "undvik" ;) Omritning och liknande sker lite sporadiskt - förmodligen pga prestandaskäl - och saker och ting uppdateras inte riktigt när man tror eller tycker eller hoppas att de borde göra det, oavsett hur mycket man anropar Invalidate() eller överridar OnPaint. Jag lyckades aldrig få nån ordning på det där, utan blev tvungen att tillgripa mängder med fulkodning för att lura hela GDI-systemet.

PS. Hoppas att du inte vill ha din kontroll halvtransparent, det är ett helvete att få till vettigt. DS.

Medlem sedan nov. 2000213 inlägg
#6

cok skrev:

Var ritar du ut grafiken, du ska göra detta i paintmetoden för den kotroll du ritar på.

r: då kallas den metoden varje gång det "behövs" och din grafik blir kvar!

Jag ritar ut grafiken på en panel och utifrån den kör jag createGraphics() och ritar sedan ut mina bilder. Dock anropas inte onPaint när jag trycker på någon av knapparna eftersom programmet inte verkar tro att det behövs.

spango skrev:

Min erfarenhet av att rita "egen" grafik i WinForms-kontroller kan sammanfattas med ett ord, "undvik" ;) Omritning och liknande sker lite sporadiskt - förmodligen pga prestandaskäl - och saker och ting uppdateras inte riktigt när man tror eller tycker eller hoppas att de borde göra det, oavsett hur mycket man anropar Invalidate() eller överridar OnPaint. Jag lyckades aldrig få nån ordning på det där, utan blev tvungen att tillgripa mängder med fulkodning för att lura hela GDI-systemet.

PS. Hoppas att du inte vill ha din kontroll halvtransparent, det är ett helvete att få till vettigt. DS.

Det låter inte så bra. Hmm, hur gör man då om man måste ha bilder, det är egentligen bara två staplar som jag vill kunna representera. Du har inga förslag på hur man skulle kunna lösa detta? Är det fulkodning som gäller eller? :)

Medlem sedan juni 20008 205 inlägg
#7

En variant är att du har två ImageLabels eller PictureBox eller vad de nu heter som du ändrar storlek på. Jag tycker spontant att det bara borde vara att göra en override på DoPaint, men efter mina äventyr med GDI förvånar mig inget längre.

Medlem sedan nov. 2000213 inlägg
#8

Fungerade fin fint med PictureBoxar, tack

134 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)