65.9K
CodeProject 正在变化。 阅读更多。
Home

一个缩略图旋转器

2008年10月16日

CPOL

2分钟阅读

viewsIcon

52003

downloadIcon

2045

一个快速而激烈的——距离屏保应用仅一步之遥的应用。

引言

首先,请记住,这不是制作拇指旋转器的最佳方法!!!现在,让我们看看什么是拇指旋转器。它是一个程序,它告诉你你的图片在哪里,并且会通过围绕椭圆缓慢旋转它们来显示它们,假装它们在 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 位置到底部绘制缩放图像。顶部的图像必须小于底部的图像。

添加照明效果

要绘制底部的阴影/淡出/倒置图像,只需按照以下步骤操作

  1. 创建图像的副本
  2. 使其倒置
  3. 对于副本中的每个像素,根据以下规则,线性缩放地更改 alpha 值:顶部为 255(无透明度),底部为 0(最大透明度)。

使顶部的图像更暗。只需在它们上面绘制一个黑色、半透明的矩形!!!

与鼠标交互

监视鼠标移动时的情况!如果它正在移动到中心附近,则不应有旋转。当鼠标在左侧时,从左到右进行旋转。当鼠标在右侧时,反向旋转。

每次绘制图像时,记住它的位置。因此,当鼠标移动时,您可以执行“命中测试”。“鼠标指针下方”的图像具有完全的光照,没有变暗效果(记住上一段)。

就这样!玩得开心。请记住,这不是最好的方法,但它有效!:)

© . All rights reserved.