C#GDI反转图形在X轴上翻转

C#GDI反转图形在X轴上翻转,c#,graphics,drawing,gdi,C#,Graphics,Drawing,Gdi,我正在使用Graphics类绘制一系列点。我正在从点阵列读取数据。无论出于何种原因,渲染图像都是颠倒的(在X轴上翻转)。有没有一种简单的方法告诉图形类“倒挂”绘图?非常感谢。听起来它不像是画颠倒了,而是像是给了它颠倒的坐标 检查是否期望坐标原点正确。默认情况下,0,0应该位于屏幕的左上角 编辑:您应该能够通过在绘制时更改每个点上的Y来进行补偿,以使用公式Y=高度-Y。您应该注意,在大多数绘图系统中,图形的默认方向或方向是从显示器顶部到显示器底部。为了补偿这一点,您需要知道您的观察区域的预期高度,

我正在使用Graphics类绘制一系列点。我正在从点阵列读取数据。无论出于何种原因,渲染图像都是颠倒的(在X轴上翻转)。有没有一种简单的方法告诉图形类“倒挂”绘图?非常感谢。

听起来它不像是画颠倒了,而是像是给了它颠倒的坐标

检查是否期望坐标原点正确。默认情况下,0,0应该位于屏幕的左上角


编辑:您应该能够通过在绘制时更改每个点上的Y来进行补偿,以使用公式Y=高度-Y。

您应该注意,在大多数绘图系统中,图形的默认方向或方向是从显示器顶部到显示器底部。为了补偿这一点,您需要知道您的观察区域的预期高度,然后从该高度减去您的坐标。这将反转方向,并设置图形相对于查看区域底部的位置

假设有两个指定为的点和一个300(宽)x200(高)的视口

在查看区域中绘制时,将映射到。这给了我们以下几点

{{0, 200}, {100, 0}}
还有一些机制可以将贴图模式切换到笛卡尔风格的坐标,这可能会与源数据匹配,但通常是避免的,因为它将重新映射已补偿默认方向的所有其他坐标

如果这是您真正想要的,Windows中的SetMapMode()函数可以用于此目的

这是函数的p/Invoke签名。(来自 )

编辑:

还有一种方法可以做到这一点,我个人还没有尝试过


这允许您指定坐标系,图形对象将为您进行映射。在您的情况下,您可能希望使用CoordinateSpace.World或CoordinateSpace.Page作为第一个参数,CoordinateSpace.Device作为第二个参数来调用它。

“在X轴上翻转”和“倒置”都表示图像在X轴上镜像(沿Y轴)。删除了我的评论。不知道为什么我看错了。转换点让生活变得简单。谢谢
{{0, 200}, {100, 0}}
[DllImport("gdi32.dll")]
static extern int SetMapMode(IntPtr hdc, int fnMapMode);