Domanda

Voglio che l'origine sia al centro della mia finestra.

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

.NET vuole che sia nell'angolo in alto a sinistra.

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

Dot net e io stiamo cercando di andare d'accordo ..

Qualcuno sa come farlo in C # usando semplicemente l'oggetto Graphics?

Graphics.TranslateTransform non lo fa poiché lascia le coordinate capovolte. La combinazione di Graphics.ScaleTransform (1, -1) non è soddisfacente neanche perché fa apparire il testo sottosopra.

È stato utile?

Soluzione

Una soluzione sarebbe quella di utilizzare la proprietà TranslateTransform. Quindi, invece di usare le strutture Point / PointF, potresti creare una tua struttura FlippedPoint / FlippedPointF che ha cast impliciti su Point / PointF (ma lanciandoli i coord vengono ribaltati):

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); }
}

Altri suggerimenti

Puoi continuare a usare ScaleTransform (1, -1) e ripristinare temporaneamente la trasformazione corrente mentre disegni il testo:

// 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;

Prova a creare l'oggetto grafico con un'altezza negativa. Non conosco specificamente la libreria C #, ma questo trucco funziona nelle ultime versioni di GDI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top