首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >旋转ImageSource?

旋转ImageSource?
EN

Stack Overflow用户
提问于 2012-12-09 17:18:04
回答 1查看 3K关注 0票数 3

我在dc (DrawingContext)上绘制了一个Grid,如下所示:

代码语言:javascript
复制
dc.DrawImage(_imageSource, new Rect(x, y, width, height);

但是,如果我想旋转我在绘图上下文中绘制的图像呢?

我知道我可以将效果推到绘图上下文中,但是,它会影响所有的绘图,而我只想旋转_imageSource的绘图。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-09 17:21:29

您可以在绘制图像之前推送RotateTransform,并在绘制后立即弹出变换。

代码语言:javascript
复制
var transform = new RotateTransform(...);
dc.PushTransform(transform);
dc.DrawImage(_imageSource, new Rect(x, y, width, height));
dc.Pop();

或者,您可以创建一个ImageDrawing,将其添加到DrawingGroup (具有Transform属性),然后绘制DrawingGroup:

代码语言:javascript
复制
var drawingGroup = new DrawingGroup();
drawingGroup.Transform = new RotateTransform(...);
drawingGroup.Children.Add(new ImageDrawing(_imageSource, new Rect(x, y, width, height)));
dc.DrawDrawing(drawingGroup);

所有的DrawingContext.Draw...方法实际创建并绘制适当的绘图对象。

您还可以执行以下操作,而不是在被覆盖的OnRender()方法中不断地重新绘制所有内容:

  • 创建DrawingVisual作为图形的容器。关于如何做到这一点,请参阅Using DrawingVisual Objects
  • 创建一个如上所示的带有ImageDrawing的DrawingGroup,并将DrawingGroup一次绘制到DrawingVisual.RenderOpen.
  • Use提供的MatrixTransform或TransformGroup中,以完成图像转换,即平移和旋转。将DrawingGroup.Transform属性设置为此转换(而不是如上所示的仅RotateTransform )。
  • 当图像的位置或旋转角度更改时,仅更改相关的转换。不需要重新绘制。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13786166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档