帆布很酷! - 页 43

 
khorosh:

你为什么要这样做,你写的是你根本就不需要一个时间表)。

用于美容。
 
Реter Konow:

谢谢你。这不是用#resource命令压缩的.bmp帧的蛮力,是吗?)))绝对不是。这是一个在MQL-canvas上播放gif文件的自然适配器,基于一个移植的.gif阅读器,在几个小时内就写好了。我在外面看起来一定像个白痴))))

尤里,感谢你的演示,但任何人都可以做这样的事情。容易。

  1. 以一个简单的GIF为例。把它记录在视频上。
  2. 从视频中获取其所有帧。
  3. 以.bmp格式保存框架,并进行编号。

  4. 通过#resource将框架整合到脚本中。

  5. 循环浏览框架,并在画布上按顺序无休止地循环显示。

结果,我们得到了一个伪gif,与MQL-程序中的标准gif格式表示没有关系。

//-----------------------------

已添加。

我要说的是,我也有一个 "伪Gif",但技术要复杂得多。它有作者压缩和播放机制。而最重要的是,"伪gif "被绑定到它们的元素上,并从一个共同的数组中复制出来。压缩的效果比通过#resource指令更好,因为不变的颜色不会从一帧记录到另一帧。


什么样的视频编辑器不能打开gif动画?Photoshop打开它们,将框架放入图层。 但有一个更简单的解决方案--在线服务--在那里上传gif动画,在一分钟内你会得到一个包含单个帧的压缩文件夹。

 
争论解决方案是否是移植的,有什么意义呢?格式是标准的,所以使用它的方式必须是标准的,而且是与格式本身的发展同时进行的。
 
附加的文件:
puh.ex5  29 kb
 
Yury Kulikov:

 

问候。

有没有人碰巧知道为什么你不能画一条2像素的线?这是一种什么样的歧视?)

void CCanvas::PolylineThick(const int &x[],const int &y[],const uint clr,const int size,const uint style,ENUM_LINE_END end_style)
  {
   if(size<=2)
     {
      if(size>0)
         PolylineWu(x,y,clr,style);
      return;
     }
...
 
厚是指 "厚",2个像素根本不厚。
 
Dmitry Fedoseev:
厚是指 "厚",2个像素根本不厚。
厚于1像素 )
 
Oleksii Chepurnyi:

问候。

也许有人知道为什么你不能用2个像素画线?这是一种什么样的歧视?)

是的,如果你用if(size<2)代替它,它就会画出来,但不准确。


@Nikolai Semko, 平滑化有问题吗?

 
Andrey Khatimlianskii:

@Nikolai Semko,这里有一个抗锯齿的问题吗?

这些函数写得太差了。有很多事情要做,要追赶。没有正常的抗锯齿,没有正常的颜色混合和透明度处理。你应该把它们揉成一团,扔进垃圾桶,然后写新的。
我以前在这里 写过这个问题。

在任何情况下,你肯定应该用这个函数取代常规的PixelTransform函数。

https://www.mql5.com/ru/forum/1111/page2553#comment_13054823

我开始写我的双倍版本(其中所有的int输入参数都是双倍的),但没有完成,把它束之高阁了。尽管表面上很简单,但不是一项非常简单的任务。嗯,准确地写出来不是问题,问题是要写出很高的质量,这样算法才会快。我的主要问题是完美主义。