Question : Région visble de BitBlt

J'ai créé une application de schéma des sortes, habituellement quand l'utilisateur (je) fait le dessin de norme de SA leur sera environ 8000 objets séparés de GraphicsPath sur l'écran et un fond d'image bitmap.

To montrent le schéma que j'ai employé la classe de BufferedGraphics pour la vitesse using le bitblt. code du

The pour dessiner le m_BGContext privé de l'image

comme m_BufferedGraphics privé de BufferedGraphicsContext
comme m_ImageVisible privé de BufferedGraphics
en tant que booléen = m_BufferedGraphics du
du

m_BufferedGraphics.Dispose d'aspiration de True

() () = m_BGContext.Allocate secondaires privés (m_PicBoxGraphics, nouveau rectangle (0, 0, PictureBox1.Width, PictureBox1.Height))le

si m_ImageVisible extrémité If

m_BufferedGraphics.Graphics.Smoothin de Then
m_BufferedGraphics.Graphics.DrawImage (m_img, 0, 0, PictureBox1.Width, PictureBox1.Height)/>gMode = SmoothingMode.AntiAlias
m_BufferedGraphics.Graphics.CompositingQuality = problème de

End Sub

The de CompositingQuality.HighQuality

m_MyDrawing.Draw (m_BufferedGraphics.Graphics) j'ai est quand je bourdonne le schéma entier que mon utilisation de mémoire monte et ralentissant l'exécution, si je bourdonne dehors il retourne à la normale tellement aucunes fuites de mémoire, ainsi la question est. Fait n'importe qui savent je peux bitblt seulement région visualisable/évidente du schéma. J'avais parlé un lotisseur et lui de Java bien qu'ils aient quelque chose appelée une clôture qui ferait ce que j'ai voulu si j'étais dans Java, mais je ne pourrais pas découvrir beaucoup à son sujet et même s'il y avait un équivalent dedans. Le filet ainsi pas sure si c'était une poursuite vaine sauvage, a juste pensé que je mentionnerais it.

Anyway si ceci a du sens pour n'importe qui, remercie à l'avance de n'importe quel help.

Oh et je biseaute l'utilisation WPF que que je pense serais meilleur mais ce doit être GDI+ et je biseaute la baisse la qualité du

Andy
de respect de drawing.

Kind class= de

Réponse : Région visble de BitBlt

Sans voir n'importe quel code ce sera assez dur pour répondre.  Comment allez-vous « bourdonnant » ?

La réponse générique est que VOUS calculez la région évidente sous forme de rectangle basé sur VOTRE algorithme de bourdonnement et puis employez GraphicsPath.GetBounds () pour chaque GraphicsPath et voyez si le rectanlge en résultant est évident using Rectangle.Intersect ().  Si oui, alors vous dessinez que GraphicsPath dans le votre « rendent » la méthode…
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us