在MouseMove上调整图形路径的大小

时间:2013-02-14 09:15:46

标签: c# gdi+

在GDI +和C#中,我使用AddRectangle和AddLine方法使用图形路径创建了一个表

enter image description here

现在在我的鼠标移动期间,我想调整/移动这个完整的表格。

我可以迭代所有子路径并在鼠标移动过程中重新计算所有内容,但我想知道是否有任何方法可以在一个Go中移动或调整这个完整的图形路径。

1 个答案:

答案 0 :(得分:2)

嗯,有GraphicsPath.Transform。

Matrix m = new Matrix();
m.Scale(scaleX, scaleY, MatrixOrder.Append);
m.Translate(offsetX, offsetY, MatrixOrder.Append);
path.Transform(m);
但是,考虑到GDI +只使用单精度浮点数,将路径转换太多次可能并不好。我建议保留一个你需要转换的原始路径。

或者您可以在绘制之前编辑Graphics对象的变换,或者在每次绘制之前重建路径。你会得到相同的结果。转换后的路径不会比新路径绘制得更快,构建路径所需的时间可能可以忽略不计。所以我猜这个重新计算最简单,而且没有我能想到的缺点。

相关问题