Microsoft
Software
Hardware
Network
Frage : BitBlt visble Region
Ich verursacht eine Zeichnungsanwendung von Art, normalerweise, wenn der Benutzer (ich) das sa-Standardzeichnen ihr ist ungefähr 8000 verschiedene GraphicsPath Gegenstände auf dem Schirm tut und ein Hintergrund bitmap.
To die Zeichnung anzeigen, die ich die BufferedGraphics Kategorie für die Geschwindigkeit using bitblt benutzt.
The Code, zum des image
privaten m_BGContext als BufferedGraphicsContext
privates m_BufferedGraphics als BufferedGraphics
privates m_ImageVisible als Boolesches zu zeichnen = True
privates Vorabgehobener betrag ()
m_BufferedGraphics.Dispose
()
m_BufferedGraphics = m_BGContext.Allocate (m_Pic
BoxGraphic
s, neues Viereck (0, 0, PictureBox1.Width, PictureBox1.Height))
, wenn m_ImageVisible Then
m_BufferedGraphics.Graphic
s.DrawImag
e (m_img, 0, 0, PictureBox1.Width, PictureBox1.Height)
Ende If
m_BufferedGraphics.Graphic
s.Smoothin
gMode = SmoothingMode.AntiAlias
m_BufferedGraphics.Graphic
s.Composit
ingQuality
= CompositingQuality.HighQua
lity
m_MyDrawing.Draw (m_Buffere
dGraphics.
Graphics)
End Sub
The Problem ich habe, ist, wenn ich die vollständige Zeichnung laut summe, die mein Gedächtnisverbrauch steigt und Leistung verlangsamend, wenn ich heraus es gehe zurück zum Normal so keine Gedächtnislecks laut summe, also die Frage ist. Tut jedermann können, ich bitblt nur die sichtbare/sichtbare Region der Zeichnung kann. Ich gesprochen mit einem Javaentwickler und -ihm, obwohl sie etwas haben, das ein Darstellungsfeld genannt, das tun, was ich wünschte, wenn ich in Java war, aber ich könnte viel nicht über es herausfinden und selbst wenn es ein Äquivalent innen gab. Netz, wenn dieses eine wilde Gans war - so nicht sure jagen, dachte gerade, dass ich it.
Anyway, wenn dieses sinnvoll zu jedermann ist, danke im Voraus für jedes mögliches help.
Oh erwähnen und ich Gebrauch WPF kippe, das, den ich sein besser denke, aber es muss GDI+ sein und ich kippe Tropfen die Qualität des drawing.
Kind Respekt
Andy
Antwort : BitBlt visble Region
Ohne irgendeinen Code zu sehen, recht stark ist dieses zu antworten. Wie gehen Sie „laut summend“?
Die generische Antwort ist, dass SIE die sichtbare Region in Form eines Viereckes berechnen verwenden, das auf IHREM laut summenden Algorithmus basiert und dann GraphicsPath.GetBounds () für jedes GraphicsPath und wenn das resultierende rectanlge using Rectangle.Intersect, sehen, sichtbar ist (). Wenn ja dann zeichnen Sie, dass GraphicsPath in Ihrem „übertragen“ Methode…
Weitere Lösungen
Wort-Presse, die Frage bewirtet
asp.net: Mein Problem ist, benutze ich einen ajax Ergänzung Kalender, um BeginDate u. EndDate Werte einzutragen
Silverlight 4 UI Ereignisse
wie kann ich irgendeine Bildentschließung online ändern und sie zum lokalen PC dann innen sparen??
ZFS Sicherungshilfe Ubuntu 10.0.4 LTS
Form-Frage für Kristallreports
Betreffend INOTES in Lotos 8.5
Mühen, die ZWISCHEN Logik erhalten zu arbeiten
Spannungs-Sensor ermittelte einen Ausfall auf Bediener DELL-PowerEdge 2650
broadcom NIC teaming