一个缩略图旋转器






4.82/5 (22投票s)
一个快速而激烈的——距离屏保应用仅一步之遥的应用。
引言
首先,请记住,这不是制作拇指旋转器的最佳方法!!!现在,让我们看看什么是拇指旋转器。它是一个程序,它告诉你你的图片在哪里,并且会通过围绕椭圆缓慢旋转它们来显示它们,假装它们在 3D 空间中,模拟地板上的镜子,使用虚假的照明算法……
在这篇文章中,没有 DirectX、OpenGL 或类似的东西。
第一步
首先,我们将围绕椭圆排列图像。为了获得——比如说——10 个点,以 x0、y0 为屏幕中心,R1 和 R2 作为长半径和短半径(这是一个椭圆!)。
for (int angle=0; angle<360; angle+=36)
{
double dAngle=DEGREE_TO_RADIANS(angle);
int x=x0+R1*cos(dAngle);
int y=y0-R2*sin(dAngle);
// do something with the x,y - for example, draw the image (scaled!)
}
动画!
要进行动画处理,只需使用一个计时器。对于每一步,为每个图像的角度添加一些增量。查看 zip 文件中的代码!
添加透视
两个简单的技巧:首先,从顶部 Y 位置到底部绘制图像。在椭圆排列的拇指旋转器中,这很好用。其次,从顶部 Y 位置到底部绘制缩放图像。顶部的图像必须小于底部的图像。
添加照明效果
要绘制底部的阴影/淡出/倒置图像,只需按照以下步骤操作
- 创建图像的副本
- 使其倒置
- 对于副本中的每个像素,根据以下规则,线性缩放地更改 alpha 值:顶部为 255(无透明度),底部为 0(最大透明度)。
使顶部的图像更暗。只需在它们上面绘制一个黑色、半透明的矩形!!!
与鼠标交互
监视鼠标移动时的情况!如果它正在移动到中心附近,则不应有旋转。当鼠标在左侧时,从左到右进行旋转。当鼠标在右侧时,反向旋转。
每次绘制图像时,记住它的位置。因此,当鼠标移动时,您可以执行“命中测试”。“鼠标指针下方”的图像具有完全的光照,没有变暗效果(记住上一段)。
就这样!玩得开心。请记住,这不是最好的方法,但它有效!:)