Graphics 对图形对象应用旋转

Graphics 对图形对象应用旋转,graphics,Graphics,我很少有使用图形对象编程的经验。我目前的任务是导出带有修订注释的文档(.tiff图像)。编辑的注释只是一个黑色矩形对象。我能够通过.XMP数据获得x坐标、y坐标、宽度和高度属性。还有一个特性叫做旋转。这就是我被卡住的地方,应用旋转 因此,想象一下,一个文件上有一个密文,遮住了第一段。然后,用户使用编辑器中的工具旋转文档,使其现在位于一侧。客户端能够正确呈现编校,因为我们使用Atalasoft控件来获取和显示注释。现在我们有了一个web服务,它将使用编校来检索该图像。由于许可问题,我们无法在此服务

我很少有使用图形对象编程的经验。我目前的任务是导出带有修订注释的文档(.tiff图像)。编辑的注释只是一个黑色矩形对象。我能够通过.XMP数据获得x坐标、y坐标、宽度和高度属性。还有一个特性叫做旋转。这就是我被卡住的地方,应用旋转

因此,想象一下,一个文件上有一个密文,遮住了第一段。然后,用户使用编辑器中的工具旋转文档,使其现在位于一侧。客户端能够正确呈现编校,因为我们使用Atalasoft控件来获取和显示注释。现在我们有了一个web服务,它将使用编校来检索该图像。由于许可问题,我们无法在此服务中使用Atalasoft控件,因此我们仅从.tiff图像中提取.XMP数据并手动绘制修订。问题是,如果用户在文档上已经有密文的情况下旋转文档,我很难让密文正确旋转(因为我缺乏图形编程方面的知识)。如果我不应用任何旋转,则编辑将显示在文档旋转之前的位置,从而编辑文档的错误区域

以下是我尝试过的:

Dim rectangle As New Rectangle(xCoordinate, yCoordinate, width, height)
graphics.RotateTransform(rotation)
graphics.FillRectangle(Brushes.Black, rectangle)
当我这样做时,最终文档中根本不会显示修订。我已经了解到,在应用旋转之前,我可能需要调用以下命令:

graphics.TranslateTransform(x,y) 
但我不知道我应该以x和y的形式传递什么。看起来我只需要从矩形的左上角开始旋转,但我还没有找到正确的方法

非常感谢您的帮助或向正确的方向努力

编辑1:

我也试过这个(取自)


它确实会旋转矩形,但它最终出现在错误的位置,因此它没有编辑文档的正确部分。再一次,当我在没有任何旋转变换的情况下显示文档时,似乎只需要使用左上角作为轴旋转密文,但我不太确定如何实现这一点

找到了答案。以下是我如何使用左上角作为轴旋转矩形:

Dim rectangle As New Rectangle(xCoordinate, yCoordinate, width, height)

Using rotationMatrix As New Matrix

    rotationMatrix.RotateAt(rotation, New PointF(rectangle.Left, rectangle.Top))
    graphics.Transform = rotationMatrix
    graphics.FillRectangle(Brushes.Black, rectangle)
    graphics.ResetTransform()

End Using
Dim rectangle As New Rectangle(xCoordinate, yCoordinate, width, height)

Using rotationMatrix As New Matrix

    rotationMatrix.RotateAt(rotation, New PointF(rectangle.Left, rectangle.Top))
    graphics.Transform = rotationMatrix
    graphics.FillRectangle(Brushes.Black, rectangle)
    graphics.ResetTransform()

End Using