2012-03-24 6 views
2

In meinem Code, sagen wir, ich habe die PaintObject(Graphics g). In einer anderen Funktion möchte ich die Funktion PaintObject aufrufen, um etwas an einem Offset zu zeichnen, anstatt es bei (0,0) zu zeichnen.Zeichnen Sie Grafiken bei Offset

Ich weiß, dass ich in Java die Graphics.create(x, y, width, height) Funktion verwenden konnte, um eine Kopie meines Grafikobjekts zu erstellen, das ich verwenden könnte, das innerhalb dieser Grenzen der ursprünglichen Grafiken zeichnen würde. Gibt es eine Möglichkeit, etwas Ähnliches in C# zu tun?

nur ein Beispiel zu geben, was mein Code aussehen könnte:

class MyClass : UserControl { 
    void PaintObject(Graphics g) { 
    // Example: draw 10x10 rectangle 
    g.DrawRectangle(new Pen(Color.Black), 0, 0, 10, 10); 
    } 

    protected override void OnPaint(PaintEventArgs e) { 
    Graphics g = e.Graphics; 
    // TODO: Paint object from PaintObject() at offset (50, 50) 
    } 
} 
+0

Verwenden Graphics.TranslateTransform() –

Antwort

7

Auf dem Graphics Objekt eine Transformation:

protected override void OnPaint(PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 

    Matrix transformation = new Matrix(); 
    transformation.Translate(50, 50); 

    g.Transform = transformation; 
} 

oder

protected override void OnPaint(PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 
    g.TranslateTransform(50, 50); 
} 
+0

Danke für die Antwort :) – Frxstrem

1

können Sie Verwenden Sie die Graphics.TranslateTransform Methode:

protected override void OnPaint(PaintEventArgs e) 
{ 
    e.Graphics.TranslateTransform(50, 50); 
    PaintObject(e.Graphics); 
} 
2

Verwenden Sie die Graphics Methode

public void TranslateTransform(float dx, float dy) 

g.TranslateTransform(dx, dy); 
+0

Danke für die Antwort :) – Frxstrem