Frage

Ich mag der Ursprung in der Mitte von meinem Fenster sein.

______________
|     ^      |
|     |      |
|     o----->|
|            |
|____________|

.NET will es in der linken oberen Ecke sein.

_____________>
|            |
|            |
|            |
|            |
V____________|

Dot net und ich versuchen, miteinander auszukommen ..

Wer weiß, wie dies in c # tun, nur das Graphics-Objekt verwenden?

Graphics.TranslateTransform tut es nicht, da es die Koordinaten blätterte den Kopf verlässt. Diese Graphics.ScaleTransform Die Kombination (1, -1) ist nicht zufriedenstellend, da entweder der Text erscheint den Kopf macht.

War es hilfreich?

Lösung

Eine Lösung wäre die Eigenschaft Translatetransform zu verwenden. Dann wird anstelle der Punkt / PointF structs verwenden könnten Sie eine FlippedPoint / FlippedPointF structs Ihrer eigenen erstellen, die implizite Abgüsse haben / PointF-zu-Punkt (aber von ihnen die coords Gießen erhalten gespiegelt):

public struct FlippedPoint
{
    public int X { get; set; }
    public int Y { get; set; }

    public FlippedPoint(int x, int y) : this()
    { X = x; Y = y; }

    public static implicit operator Point(FlippedPoint point)
    { return new Point(-point.X, -point.Y); }

    public static implicit operator FlippedPoint(Point point)
    { return new FlippedPoint(-point.X, -point.Y); }
}

Andere Tipps

Sie können mit ScaleTransform(1, -1) fortsetzen und die aktuelle Transformation vorübergehend zurückgesetzt, während des Textes Zeichnung:

// Convert the text alignment point (x, y) to pixel coordinates
PointF[] pt = new PointF[] { new PointF(x, y) };
graphics.TransformPoints(CoordinateSpace.Device, CoordinateSpace.World, pt);

// Revert transformation to identity while drawing text
Matrix oldMatrix = graphics.Transform;
graphics.ResetTransform();

// Draw in pixel coordinates
graphics.DrawString(text, font, brush, pt[0]);

// Restore old transformation
graphics.Transform = oldMatrix;

Versuchen Sie die Grafik mit einer negativen Höhe Objekt zu schaffen. Ich weiß nicht, die C # -Bibliothek speziell, aber dieser Trick funktioniert in neueren Versionen von GDI.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top