C# 如何剪切矩形而不移动它?
我想问一下,是否有可能在不移动物体的情况下剪切物体。这是我正在做的代码C# 如何剪切矩形而不移动它?,c#,graphics,rectangles,C#,Graphics,Rectangles,我想问一下,是否有可能在不移动物体的情况下剪切物体。这是我正在做的代码 Matrix matrix = new Matrix(); matrix.Shear(2, 0); g.Transform = matrix ; g.DrawRectangle(Pens.Black, new Rectangle(200, 200, 100, 100)); g.ResetTransform(); 剪切系
Matrix matrix = new Matrix();
matrix.Shear(2, 0);
g.Transform = matrix ;
g.DrawRectangle(Pens.Black, new Rectangle(200, 200, 100, 100));
g.ResetTransform();
剪切系数与坐标系原点有关 因此,要使剪切结果保持在“相同”位置,需要添加平移矩阵
处理矩阵和其他GDI+对象强>
Matrix matrix = new Matrix();
matrix.Translate(200, 300);
matrix.Shear(2, 0);
matrix.Translate(-200, -300);
g.Transform = matrix ;
g.DrawRectangle(Pens.Black, new Rectangle(200, 200, 100, 100));
g.ResetTransform();
或
剪切因子与坐标系的原点有关
因此,要使剪切结果保持在“相同”位置,需要添加平移矩阵
创建将应为静态的点移动到坐标系原点的平移。在本例中,静态点为(200300),因此平移为(-200,-300)
应用翻译
剪
创建翻译的倒数。在示例中:(200300)
应用反向翻译
顺便说一句:确保处理矩阵和其他GDI+对象强>
Matrix matrix = new Matrix();
matrix.Translate(200, 300);
matrix.Shear(2, 0);
matrix.Translate(-200, -300);
g.Transform = matrix ;
g.DrawRectangle(Pens.Black, new Rectangle(200, 200, 100, 100));
g.ResetTransform();
或
这是您需要做的:
将矩形的左下角平移到原点。
让偏移量为(-dX,-dY)
应用剪切变换
对矩形应用反向平移,即(dX,dY)
这是您需要做的:
将矩形的左下角平移到原点。
让偏移量为(-dX,-dY)
应用剪切变换
对矩形应用反向平移,即(dX,dY)
我如何计算值来转换它?我无法让它工作。我将这些步骤添加到我的回答中。你可以用翻译创建一个翻译矩阵,因此,当你调用Invert时,它将被更改为反向翻译。正如我在示例中添加的那样,您也可以手工完成。我编辑了我的答案。矩阵需要按相反的顺序排列。。。初学者的错误:)Sorry我添加了一个稍微不同的实现,它使用Invert方法,我如何计算值来翻译它?我无法让它工作。我将这些步骤添加到我的回答中。你可以用翻译创建一个翻译矩阵,因此,当你调用Invert时,它将被更改为反向翻译。正如我在示例中添加的那样,您也可以手工完成。我编辑了我的答案。矩阵需要按相反的顺序排列。。。初学者的错误:)Sorry添加了一个稍微不同的实现,它使用Invert方法