绘图时控制的翻转坐标

Nip*_*rus 10 .net c# custom-controls winforms

我在控件上绘制图形,但0,0位于控件的左上角.有没有办法翻转坐标,使0,0位于控件的左下角?

Dre*_*kes 16

如果您使用的是WinForms,那么您可能会发现可以使用Graphics.ScaleTransform翻转Y轴:

private void ScaleTransformFloat(PaintEventArgs e)
{
    // Begin graphics container
    GraphicsContainer containerState = e.Graphics.BeginContainer();

    // Flip the Y-Axis
    e.Graphics.ScaleTransform(1.0F, -1.0F);

    // Translate the drawing area accordingly
    e.Graphics.TranslateTransform(0.0F, -(float)Height);

    // Whatever you draw now (using this graphics context) will appear as
    // though (0,0) were at the bottom left corner
    e.Graphics.DrawRectangle(new Pen(Color.Blue, 3), 50, 0, 100, 40);

    // End graphics container
    e.Graphics.EndContainer(containerState);

    // Other drawing actions here...
}
Run Code Online (Sandbox Code Playgroud)

如果要使用常规坐标系进行其他绘图,则只需要包含开始/结束容器调用.有关图形容器的更多信息,请访问MSDN.

正如Tom在评论中所提到的,这种方法要求Height值具有正确的值.如果您尝试此操作并且看不到任何内容,请确保调试器中的值是正确的.