Elemental
2010-11-12, 12:31:03
Hallo,
ich versuche gerade ein Objekt mittels GraphicPath zu zeichnen. Allerdings muss ich das Object manchmal auf dem Kopf stehend zeichnen, was ich mit Hilfe einer Matrixtransformation erreichen wollte.
internal override void Draw(Graphics g, Color color, Color backColor, double dOffsetX, double dOffsetY)
{
GraphicsPath path = new GraphicsPath();
path.AddArc(this.X + (float)dOffsetX, this.Y + (float)dOffsetY, this.Diameter, this.Diameter, this.StartAngle, this.SweepAngle);
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.Translate(0f, (float)-m_dCenterY);
matrixMirrorY.Multiply(new Matrix(1f, 0f, 0f, -1f, 0f, 0f));
matrixMirrorY.Translate(0f, (float)m_dCenterY);
path.Transform(matrixMirrorY);
Pen pen = new Pen(color, (float)this.m_aperture.Width);
g.DrawPath(pen, path);
}
Das auf den Kopf drehen funktioniert zwar, aber das Object wird auch weit in Y-Richtung verschoben!
Sieht jemand, was an meiner Matrix falsch ist?
mfG
Elemental
ich versuche gerade ein Objekt mittels GraphicPath zu zeichnen. Allerdings muss ich das Object manchmal auf dem Kopf stehend zeichnen, was ich mit Hilfe einer Matrixtransformation erreichen wollte.
internal override void Draw(Graphics g, Color color, Color backColor, double dOffsetX, double dOffsetY)
{
GraphicsPath path = new GraphicsPath();
path.AddArc(this.X + (float)dOffsetX, this.Y + (float)dOffsetY, this.Diameter, this.Diameter, this.StartAngle, this.SweepAngle);
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.Translate(0f, (float)-m_dCenterY);
matrixMirrorY.Multiply(new Matrix(1f, 0f, 0f, -1f, 0f, 0f));
matrixMirrorY.Translate(0f, (float)m_dCenterY);
path.Transform(matrixMirrorY);
Pen pen = new Pen(color, (float)this.m_aperture.Width);
g.DrawPath(pen, path);
}
Das auf den Kopf drehen funktioniert zwar, aber das Object wird auch weit in Y-Richtung verschoben!
Sieht jemand, was an meiner Matrix falsch ist?
mfG
Elemental