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.
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.
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? :)
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.