图形可垂直翻转画布



我从一个名为line的列表中放置坐标,用我的panel1缩放它们,并用GraphicsPath绘制连接它们的线。我遇到的问题是图像被垂直翻转,可能是因为panel1的(0,0)坐标在左上角,而我的法线坐标源于左下角有零的坐标系。代码如下:

Graphics G = e.Graphics;
GraphicsPath gp = new GraphicsPath();
foreach (var line in tockeKoordinate)
{
gp.AddLine((float)(line.startX), (float)(line.startY),
(float)(line.endX),   (float)(line.endY));
gp.CloseFigure();
}
var rect = gp.GetBounds();
var scale = Math.Min(1f * (int)(panel1.ClientSize.Width)  / rect.Width,
1f * (int)(panel1.ClientSize.Height) / rect.Height);
using (Pen pen = new Pen(Color.DarkGreen, 0.0001f))
{
G.SmoothingMode = SmoothingMode.AntiAlias;
G.Clear(Color.White);
G.ScaleTransform(scale, scale);
G.TranslateTransform(-rect.X, -rect.Y);
G.DrawPath(pen, gp);
}

我一直在搜索,不知怎么的,这与G.TranslateTransform行有关,但我在值中添加减号前缀的成功率为零。。。

TranslateTransform只是移动东西,但不能翻转任何东西。可以通过将其中一个参数否定为"缩放变换"来翻转它。

在TaW和James Lambert的帮助下解决。需要通过否定ScaleTransform的Y参数来翻转轴,但也需要使用TranslateTransform:降低画布

G.TranslateTransform(0, +panel1.ClientSize.Height);
G.ScaleTransform(scale, -scale);

最新更新