在Canvas上做一个众包项目 - 页 20

 

对比这些公式,结果确实不同。我还比较了速度。

左半边是由三个不同的颜色层组成,到处都是128的透明度。颜色是由终端混合的。

右上角的是一层做的,按照英文维基的说法是混合在一起的。

根据俄罗斯维基,右下角为一层。


终端和英文维基的截图比较(终端从上面开始)。


通过保存在文件中的资源来比较公式(英文从上)。


创建一个资源 需要大量的时间,与计算颜色和填充数组多达10次相比,可能没有必要处理OCL。

PS 似乎是个好主意,你可以在MT上进行Photoshop处理 :)

附加的文件:
script.mq5  4 kb
 
了解CCanvas类 的人,你能告诉我是否可以在那里创建一个梯度?例如,对于一个矩形要把它变成一个按钮?我想问这个问题已经很久了)。
 
Реter Konow:
了解CCanvas类的人,你能告诉我是否可以在那里创建一个梯度?例如,对于一个矩形要把它变成一个按钮?我想问这个问题已经很久了)。
有的。
 
Artyom Trishkin:
检查。

是否有任何用Canvas绘制的按钮的例子?我不记得有看到过。我见过一些非常酷的按钮,但它们是基于源图像的,我还没有见过完全画在画布上的...
 
Реter Konow:

是否有任何用卡纳瓦画的纽扣的例子?我不记得有看到过。我见过一些非常酷的按钮,但它们是基于源图像的,我还没有见过一个完全用帆布画的......
阅读Anatoly对他的图形库的描述--如果我没记错的话,是关于信息元素的。
 
Artyom Trishkin:
阅读Anatoly对他的图库的描述--关于信息元素,如果我没记错的话。

我会试着找到它...
 
找到了。工具提示元素使用梯度。但我不明白是否有可能为每条渐变线设置不同的颜色和透明度。我必须在闲暇时翻阅kanvas。我很好奇...
 
Реter Konow:
了解CCanvas类的人,你能告诉我是否可以在那里创建一个梯度?例如,对于一个矩形要把它变成一个按钮?我想问这个问题已经很久了)。
嗨,彼得!
我不认为梯度有什么问题。
这里有一个简单明了的例子,这个脚本会浏览所有的颜色,并动态地画出一个变化的渐变色方形。
为了让它工作,你需要将Canvas.mqh中的数组m_pixels[]移到公共位置。
public:
   uint              m_pixels[];               // array of pixels
#include <Canvas\Canvas.mqh>
void OnStart()
  {
   CCanvas Grad;

   color col;
   if(!Grad.CreateBitmapLabel(0,0,"Grad",100,100,256,256,COLOR_FORMAT_XRGB_NOALPHA)) Print("Error creating canvas: ",GetLastError());
   for(int r=0; r<256; r++) // red
     {
      int j=0;
      // заполняем цветной градиентный квадрат
      for(int b=0; b<256; b++) // blue
         for(int g=0; g<256; g++) // green
           {
            col=(color)(((r&0x0000FF)<<16)|((g&0x0000FF)<<8)|(b&0x0000FF)); // формируем цвет RGB
            Grad.m_pixels[j]=col; // рисуем точку с текущим цветом
            j++;
           }
      Grad.Update();
      Sleep(20);  // Подождем для плавности
     }
  }
附加的文件:
Gradient.mq5  2 kb
 
Nikolai Semko:
嗨,彼得!
我不认为梯度有什么问题。
这里有一个简单的脚本例子,它通过所有的颜色,画出一个渐变色的方形。
为了让它工作,你需要将Canvas.mqh中的数组m_pixels[]移到公共位置。


嗨,尼古拉!

谢谢你的例子,但这不是我的意思。我没有清楚地表达我的观点。我指的是广场的框架,这将使广场变成一个按钮。为此,框架的线条需要不同。例如,如果上面和左边的线是浅色的,下面和右边的线是深色的,那么按钮就被按下了,如果反过来,按钮就会看起来被按下了。我想知道如何能用kanvas来做。

梯度称为框架线。也许这是错的...

 
Реter Konow:

嗨,尼古拉!

谢谢你的例子,但这不是我的意思。我没有清楚地表达我的观点。我指的是广场的框架,这将使广场变成一个按钮。为此,框架的线条需要不同。例如,如果上面和左边的线是浅色的,下面和右边的线是深色的,那么按钮就被按下了,如果反过来,按钮就会看起来被按下了。我想知道如何能用kanvas来做。

梯度称为框架线。也许这是错的...


按钮的图像可以通过加载一个现成的bmp-image或程序绘图来形成(有很多变体)。然后简单地通过处理OnChartEvent中的鼠标事件改变其图像。