sim*_*imo 3 c# wpf grid image image-rotation
我在这样的DC(DrawingContext)上绘制Grid:
dc.DrawImage(_imageSource, new Rect(x, y, width, height);
Run Code Online (Sandbox Code Playgroud)
但是,如果要旋转在绘图上下文中绘制的图像怎么办?
我知道我可以将效果推送到工程图上下文,但是,这将影响所有工程图,而我只想旋转的工程图_imageSource。
任何的想法?
您可以在绘制图像之前推动RotateTransform,并在绘制后立即弹出变换。
var transform = new RotateTransform(...);
dc.PushTransform(transform);
dc.DrawImage(_imageSource, new Rect(x, y, width, height));
dc.Pop();
Run Code Online (Sandbox Code Playgroud)
或者,您可以创建一个ImageDrawing,将其添加到DrawingGroup(具有Transform属性),然后绘制DrawingGroup:
var drawingGroup = new DrawingGroup();
drawingGroup.Transform = new RotateTransform(...);
drawingGroup.Children.Add(new ImageDrawing(_imageSource, new Rect(x, y, width, height)));
dc.DrawDrawing(drawingGroup);
Run Code Online (Sandbox Code Playgroud)
实际上所有的DrawingContext.Draw ...方法都会创建并绘制适当的Drawing对象。
除了可以使用重写的OnRender()方法连续重绘所有内容之外,您还可以执行以下操作:
创建一个DrawingVisual作为图形的容器。有关如何执行此操作,请参见使用DrawingVisual Objects。
与ImageDrawing创建DrawingGroup如上所示并画出DrawingGroup 一旦进入的DrawingContext提供由DrawingVisual.RenderOpen。
使用MatrixTransform或TransformGroup进行完整的图像转换,即平移和旋转。将DrawingGroup.Transform属性设置为此变换(而不是如上面所示的RotateTransform)。
当图像的位置或旋转角度改变时,仅更改相关的变换。不需要重画。
| 归档时间: |
|
| 查看次数: |
2419 次 |
| 最近记录: |