Tim Bureck
Erfahrenes Mitglied
GDI+ Geschwindigkeit
Hallo zusammen,
ich habe das Problem, dass bei einem eigenen Usercontrol das Zeichnen ab einer gewissen Größe immer länger dauert (ja, irgendwie logisch ). Zugegeben, der Zeichenalgorithmus ist sehr einfach gehalten. Wie könnte ich das optimieren?
Bereits bei OpticalZoom 1 und ZoomGraphics 4 (RealHeight = 40; RealWidth = 128) kann man dem Control schön beim Zeichnen zusehen. Was beim OpticalZoom 16 passiert könnt ihr euch dann ausmalen.
Best regards
Hallo zusammen,
ich habe das Problem, dass bei einem eigenen Usercontrol das Zeichnen ab einer gewissen Größe immer länger dauert (ja, irgendwie logisch ). Zugegeben, der Zeichenalgorithmus ist sehr einfach gehalten. Wie könnte ich das optimieren?
C#:
protected override void OnPaint(PaintEventArgs pe) {
base.OnPaint(pe);
Graphics g = pe.Graphics;
if (this.CarView != null) {
Color c = NFZColor32.TRANSPARENT.Color;
Color transparentMarker = Color.FromArgb(0, 140, 0);
for (int y = 0; y < this.RealHeight; y++) {
for (int x = 0; x < this.RealWidth; x++) {
c = ((NFZColor32)this.CarView.Pixels[x / this.ZoomGraphic, y / this.ZoomGraphic]).Color;
g.FillRectangle(new SolidBrush(c), x * this.OpticalZoom, y * this.OpticalZoom, this.OpticalZoom, this.OpticalZoom);
if (c == NFZColor32.TRANSPARENT.Color && this.OpticalZoom >= 3) {
g.DrawRectangle(
new Pen(transparentMarker),
x * this.OpticalZoom + (this.OpticalZoom / 2 - 1),
y * this.OpticalZoom + (this.OpticalZoom / 2 - 1),
this.OpticalZoom % 2 == 0 ? 2 : 1,
this.OpticalZoom % 2 == 0 ? 2 : 1
);
}
}
}
}
}
Bereits bei OpticalZoom 1 und ZoomGraphics 4 (RealHeight = 40; RealWidth = 128) kann man dem Control schön beim Zeichnen zusehen. Was beim OpticalZoom 16 passiert könnt ihr euch dann ausmalen.
Best regards
Zuletzt bearbeitet: