gpt4 book ai didi

c# - 如何更改 GraphicsPath 内的点的坐标?

转载 作者:行者123 更新时间:2023-11-30 18:08:55 24 4
gpt4 key购买 nike

是否可以更改 GraphicsPath 对象中某些点的坐标,同时将其他点留在原处?

传递到我的方法中的 GraphicsPath 对象将包含多边形和线条的混合体。我的方法看起来像:

void UpdateGraphicsPath(GraphicsPath gPath, RectangleF regionToBeChanged, PointF delta)
{
// Find the points in gPath that are inside regionToBeChanged
// and move them by delta.
// gPath.PathPoints[i].X += delta.X; // Compiles but doesn't work
}

GraphicsPath.PathPoints 似乎是只读的,GraphicsPath.PathData.Points 也是如此。所以我想知道这是否可能。

也许用一组更新的点生成一个新的 GraphicsPath 对象?我如何知道一个点是直线还是多边形的一部分?

如果有人有任何建议,我将不胜感激。

最佳答案

感谢您的建议 Hans,这是我对您使用 GraphicsPath(PointF[], byte[]) 构造函数的建议的实现:

GraphicsPath UpdateGraphicsPath(GraphicsPath gP, RectangleF rF, PointF delta)
{
// Find the points in gP that are inside rF and move them by delta.

PointF[] updatePoints = gP.PathData.Points;
byte[] updateTypes = gP.PathData.Types;
for (int i = 0; i < gP.PointCount; i++)
{
if (rF.Contains(updatePoints[i]))
{
updatePoints[i].X += delta.X;
updatePoints[i].Y += delta.Y;
}
}

return new GraphicsPath(updatePoints, updateTypes);
}

似乎工作正常。感谢您的帮助。

关于c# - 如何更改 GraphicsPath 内的点的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2840925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com