Questione : Regione visble di BitBlt

Ho generato un'applicazione dell'illustrazione delle specie, solitamente quando l'utente (me) fa il disegno di campione del sa loro sarà circa 8000 oggetti separati di GraphicsPath sullo schermo e un'immagine di priorità bassa bitmap.

To visualizza l'illustrazione che ho usato il codice categoria di BufferedGraphics per la velocità using bitblt. codice del

The per disegnare il m_BGContext riservato del image

come m_BufferedGraphics riservato di BufferedGraphicsContext
come m_ImageVisible riservato di BufferedGraphics
come booleano = m_BufferedGraphics del
del

m_BufferedGraphics.Dispose di tiraggio di True

() () = m_BGContext.Allocate secondari riservati (m_PicBoxGraphics, nuovo rettangolo (0, 0, PictureBox1.Width, PictureBox1.Height))il

se m_ImageVisible estremità If

m_BufferedGraphics.Graphics.Smoothin di Then
m_BufferedGraphics.Graphics.DrawImage (m_img, 0, 0, PictureBox1.Width, PictureBox1.Height)/>gMode = SmoothingMode.AntiAlias
m_BufferedGraphics.Graphics.CompositingQuality = problema del

End Sub

The di CompositingQuality.HighQuality

m_MyDrawing.Draw (m_BufferedGraphics.Graphics) ho è quando zumo l'intera illustrazione che il mio uso di memoria sta andando in su e ritardando la prestazione, se zumo fuori esso vado indietro al normale così nessun perdite di memoria, in modo da la domanda è. Fa chiunque sanno posso bitblt soltanto regione osservabile/visibile dell'illustrazione. Avevo comunicato con sviluppatore e lui del Java benchè avessero qualcosa denominato una vista che farebbe che cosa ho voluto se fossi in Java, ma non potrei scoprire molto a questo proposito ed anche se ci era un equivalente dentro. La rete così non sure se questo fosse un inseguimento inutile selvaggio, ha pensato appena che accennassi it.

Anyway se questo ha significato a chiunque, ringraziassi in anticipo per tutto il help.

Oh e smusso l'uso WPF che penso sarei migliore ma deve essere GDI+ e smusso la goccia la qualità del

Andy
di riguardi di drawing.

Kind class= del

Risposta : Regione visble di BitBlt

Senza vedere alcun codice questo sarà abbastanza duro rispondere a.  Come siete “che zumate„?

La risposta generica è che computate la regione visibile sotto forma d'un rettangolo basato sulla VOSTRA procedura di zumata ed allora usate GraphicsPath.GetBounds () per ogni GraphicsPath e vedete se il rectanlge risultante è visibile using Rectangle.Intersect ().  In caso affermativo, allora disegnate che GraphicsPath in vostro “rende„ il metodo…
Altre soluzioni  
 
programming4us programming4us