WinForms在旋转的矩形框架上绘制图像的一部分

时间:2015-05-17 21:38:38

标签: c# winforms

我正在处理数码相框的图像过渡,并尝试实现这一转变:

Illustrated example

它更像雷达式的过渡,擦拭效果从180度角从一侧传到另一侧。虽然它并没有出现" blocky"但我只是将矩形间隔开以用于说明目的。整个事情应该是平滑的过渡,没有任何FPS口吃效果。

我的逻辑是以像上图那样以(θ)旋转角度绘制图像的特定部分 - 但最终会绘制100个扫过屏幕的矩形。

有更有效的方法吗?如果没有,我可以提供一些代码提示,指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

由于WinForms仅使用CPU渲染,因此几乎不可能在没有任何FPS快门的情况下,特别是在较大的屏幕中。你必须在里面嵌入OpenTK(如果你想使用OpenGL)或Direct3D帧,或者你可以用WPF来制作动画。

如果您使用其中任何一个(例如OpenGL),则必须将其作为纹理加载,并且动画将在三角形级别(仅拖动角落)上完成,而不是在图像本身上完成。

如果你想要一个曲面,就像一个真正的页面过渡,我建议使用一个bezier补丁,如下所示:http://nehe.gamedev.net/tutorial/bezier_patches__fullscreen_fix/18003/

这种编码需要花费大量时间,而且远远超出StackOverflow的目的(设置完整的OpenGL / DirectX控件+如果你想设置Bezier补丁怎么做)。

如果您不想嵌入任何内容,可以使用WPF查看此转换教程,但我并非100%确定这是您所需要的: http://www.codeproject.com/Articles/14895/WPF-Tutorial-Part-Transformations