2009-08-13 80 views
0

有谁知道一个好的资源,将告诉我如何使用C++加载图像并旋转它?C++自旋图像资源

我的意思是旋转是做一个旋转的图像的实际动画,而不是物理旋转图像并保存它。

如果我不清楚我在问什么,请在downvoting之前要求澄清。

感谢

+0

你想独立于平台的解决方案? – 2009-08-13 21:05:27

+0

我正在使用Windows平台。我对Mac或Linux一无所知。谢谢 – CodeLikeBeaker 2009-08-13 21:12:29

回答

6

我肯定会默认OpenGL的这种类型的任务,您可以将图像加载到一个纹理,然后要么在不同的角度重新绘制图像,或更好,但你可以旋转“相机”在OpenGL引擎中。有许多OpenGL教程,快速的谷歌搜索将为您提供所需的一切。

+0

好的谢谢,我会检查出OpenGL,并从那里去。 – CodeLikeBeaker 2009-08-13 21:38:10

-1

我同意DeusAduro。 OpenGL是这样做的好方法。

你也可以做到这一点与Qt的

+0

我不知道为什么一个人在这里downvote,我在qt做了这样的想法。我需要qt这样的东西。无论如何,我建议openGL。我认为这是一种奇怪的行为。 – ufukgun 2009-08-14 07:02:35

-1

的“滚你自己的”解决方案是困难的。

我建议寻找WPF - 它可能在图像控件中有一些不错的选项。

+0

从C++使用WPF是太棒了:) – 2009-08-13 22:02:11

1

在Windows中使用GDI +,你可以显示通过以下方式旋转图像:

Graphics graphics(GetSafeHwnd()); // initialize from window handle 
// You can construct Image objects from a variety of 
// file types including BMP, ICON, GIF, JPEG, Exif, PNG, TIFF, WMF, and EMF. 
Image image(L"someimage.bmp");  

graphics.RotateTransform(30.0f); // 30 - angle, in degrees. 
graphics.DrawImage(&image, 0, 0); // draw rotated image 

您可以阅读here更详细的解释。


第二种解决方案是使用DirectX。你可以创建texture from file及其后的render它。这不是微不足道的解决方案,但它会使用硬件加速并为您提供最佳性能。


在Windows 7上,可用的新API称为Direct2D。我还没有使用它,但它看起来很有希望。

Direct2D为Win32开发人员提供了以卓越的性能和视觉质量执行二维图形渲染任务的能力。

+0

这是否足够快看起来动画? – 2009-08-13 21:54:55

+0

如果您使用缓存位图和双缓存,速度就够快了。 – 2009-08-13 21:59:35