我编写了代码来进行2D转换:缩放。
(value =来自滑块1-10的变量)
int x=punktx.back();
int y=punkty.back();
DrawPixel(x*value/6.0,y*value/6.0,bits,255,255,255);
我收到了那个输出:
正如你所看到的,我在那个广场上收到了一些休息时间。可以,或者我的代码错了吗?
答案 0 :(得分:1)
这不是你在Qt中扩展事物的方式。请改用 QImage :: scaled()或 QPixmap :: scaled()方法。
关于你的问题,中断的结果是你使用相同数量的像素绘制大方块和小方块 - 你必须填充像素之间的间隙,但缩放这种方式不是'无论如何,如上所述,这是有意义的。
答案 1 :(得分:0)
如果您想实现一个简单的缩放功能作为学习练习,有些方法是:
不是每个原始像素绘制1个像素,而是以该像素的颜色绘制缩放尺寸的矩形。这样做的好处是它只对现有代码进行了微小的改动,因此首次尝试可能值得尝试。
循环输出像素,然后插入输入图像上的位置(反转缩放),然后绘制一个正确颜色的像素。这避免了一些绘制大量矩形的开销(可能会多次绘制相同的输出像素)。
如上所述,但将数据写入存储在内存中的位图,然后使用位图绘制命令一次性绘制。
此外,如果您真的想要获得更好的效果,您可以确定输出像素是否跨越多个输入像素,然后平均颜色,依此类推。这样可以获得更平滑的效果,但可能会使纯色图像模糊不清。