C# 用 GDI+绘制一个带角度的矩形

时间:2022-10-04 19:18:00
   就是 鼠标mousedown 两次 确定一个 直线  利用这个直线来确定一个斜率     然后用第一次mousedown的点做为矩形的坐上角的点来绘制矩形!  
   我发现利用   drawArgs.Graphics.RotateTransform((float)jiaodu, MatrixOrder.Append); 这个方法实现旋转 是旋转地整个画布!   那样子 我意思是 只想旋转这个矩形 以这个矩形的左上角的点来进行旋转!


       因为我是在第三方插件上做 所以不可能在上面再新建一个画布或者是 PictureBox  求大家帮帮忙

6 个解决方案

#1


杜绝0回复

#2


到我的空间去下载一个函数,图像的旋转(任意角度)。旋转前后的图像切割、拼接就得自己做了

#3


既然可以2點繪製了直線,那旋轉的矩形也用這個方法實現就可以了,不需要用系統的矩形的,個人看法。

#4



System.Drawing.Drawing2D.GraphicsState state =  drawArgs.Graphics.Save();       //<---
{
   drawArgs.Graphics.RotateTransform((float)jiaodu, MatrixOrder.Append); 
   drawArgs.Graphics.DrawRectangle(...);
}
drawArgs.Graphics.Restore(state);                                               //<---

#5



有2种办法
一是算出来新的顶点,直接把4个点连起来

另一种就是通过旋转,这种方法比较简单

旋转之后,要再转回去,以防止其它的也跟着转


#6


引用 5 楼 cpio 的回复:
有2种办法 
一是算出来新的顶点,直接把4个点连起来 

另一种就是通过旋转,这种方法比较简单 

旋转之后,要再转回去,以防止其它的也跟着转 

  可是在世界坐标上是有正负之分的 请问下 能不能在给详细点的思路!

#1


杜绝0回复

#2


到我的空间去下载一个函数,图像的旋转(任意角度)。旋转前后的图像切割、拼接就得自己做了

#3


既然可以2點繪製了直線,那旋轉的矩形也用這個方法實現就可以了,不需要用系統的矩形的,個人看法。

#4



System.Drawing.Drawing2D.GraphicsState state =  drawArgs.Graphics.Save();       //<---
{
   drawArgs.Graphics.RotateTransform((float)jiaodu, MatrixOrder.Append); 
   drawArgs.Graphics.DrawRectangle(...);
}
drawArgs.Graphics.Restore(state);                                               //<---

#5



有2种办法
一是算出来新的顶点,直接把4个点连起来

另一种就是通过旋转,这种方法比较简单

旋转之后,要再转回去,以防止其它的也跟着转


#6


引用 5 楼 cpio 的回复:
有2种办法 
一是算出来新的顶点,直接把4个点连起来 

另一种就是通过旋转,这种方法比较简单 

旋转之后,要再转回去,以防止其它的也跟着转 

  可是在世界坐标上是有正负之分的 请问下 能不能在给详细点的思路!