|
|
1
9
不要让别人使你气馁。你可以做到这一点,而且速度可能比你想象的要快。读一本或两本关于C++的书,你可以在不知道很多的情况下通过一个项目,但是你经常会感到沮丧。让我们将您的项目分解为一组小目标。当你完成每一个目标时,你对C++的信心就会提高。
首先,让我们看看图像混合的问题。我假设您希望将有问题的图像“淡入”到您激活的任何windows背景中。如果要使用纯色背景,只需在画布刷新之间更改相关图像的alpha透明度即可。基本上,您需要根据刷新计时器平均两幅图像中每个像素的颜色值。以更直接的方式查找任意结果像素(P3)的红色、绿色和蓝色像素元素
当我提到屏幕画布时,我指的是程序将输出可视数据的区域。所有图像渲染应用程序或教程基本上都会引用相同的概念。如果你觉得这特别有趣,请考虑一个研究生课程或计算机视觉学习课程。相信我,你不会后悔的。无论如何,考虑到你的应用程序的基本性质,我建议不要使用openGL或DirectX,因为它们都有自己的应用程序特定知识层,你需要在它们有用之前获得它们。另一方面,如果你想要内置的3d细节,比如双缓冲和gpu卸载,我会选择openGL(更不依赖平台)。还有很多有趣的图像库。 至于多监视器支持,这是一个棘手但并不复杂的问题。基本上,您只需要设置画布边界(屏幕边界)以匹配多个监视器的几何图形。对于多个具有相同分辨率的监视器,这不应该是一个问题,如果监视器分辨率不匹配,可能会变得棘手(屏幕上可能没有显示画布区域等)。对于这些问题,有众所周知的算法和解决方法,但这可能超出了本问题的范围。 最后,对于所需的计时器,这应该是最简单的部分。Windows和Linux以各自奇怪的方式处理时间(为什么MS不实现strtime),所以如果您对可移植性感兴趣,我会使用第三方库。否则,只需使用windows settimer()基本功能,并在回调函数中渲染图像。 高级主题:如果你还在阅读,你可以对这个程序做一些有趣的算法改进。例如,当计时器每秒关闭一个设定的量程时,您可以缓存最初的几个混合图像并节省一些处理时间(我们的眼睛不太擅长注意变化的颜色渐变之间的差异)。如果您使用的是openGL,那么您可以将混合图像集缓存为显示列表(必须使用所有图形卡内存来完成某些事情,对吗?)。有趣的东西,祝你好运! |
|
|
2
5
哦,孩子,我想你会感到惊讶的。要学习C++,请执行以下操作:
编辑以澄清 当前位置我对亨特·戴维斯和《元素》的答案都投了赞成票,因为它们都非常好,非常中肯,而且总的来说,尽管我在上面大喊大叫,我还是支持这种鼓励。事实上,我不怀疑很多人在C/C++中能够在一起给出一个框架例子,即使他们实际上不知道C++的很多东西。继续尝试吧,你很有可能在合理的时间内想出一个屏幕保护程序。但是能够“在C/C++中一起破解某些东西”远远不是“学会了C++”。(我是说 非常 远。) C++是一种不可思议的复杂、卑鄙、顽固的野兽。我还认为它几乎是惊人的美丽,但在这方面,它可能反映了从一个非常高的山风景:很难达到的点,你可以欣赏美丽。 |
|
|
3
1
C++是一种复杂的语言,SBI所指的一切可能是真的(当然,经过10年的商业C++编程还有一些要学习),但我认为如果你对另一种语言有信心,那么只需要几天时间: a) 安装这里提到的一个编译器(我建议VC作为windows编程的快速入门) b) 查找使用windows GDI执行简单操作的屏幕保护程序的示例代码(MS文档中有一些关于屏幕保护程序的代码) c) 修改此代码以执行所需操作。 就您有限的需求而言,我想您会发现windowgdi++库有足够的能力来顺利完成您所需的alpha淡入淡出。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |