在一个OBJ_TEXT对象中,是否可以在多行上输出文本? - 页 5

 
Nikolai Semko:

这里还有一个问题。
如果你无法访问生成kanvas的代码,那么你也无法访问该kanvas的资源。你可以看到位图对象的列表,但看不到资源的列表。如果你不知道资源名称,你只能通过匹配或暴力手段找到它,这已经超出了实际用途。
你如何获得认可的点数阵列?如果只是通过截图,这也是无稽之谈。
还是我错了?

这些代码当然是我的,这意味着它是开放源代码。我只是想,如果屏幕上有一个日期,为什么还要把它保存在某个地方,如果你能得到它 ...前提是你能得到它。 哈哈,"漂亮 "地说。

嗯,有点像你可以从一个文本字段 中获得一个字符串,并从那里拉出部分字符串。但是,可惜的是,没有,所以没有。

 
Andrey Barinov:

位图属性有一个通往资源的路径。我不知道你是否能以编程方式得到它。


正是如此。毕竟,问题不是从图像中获取,而是从资源中获取。然后我自己也失去了我所寻找的东西。我将进行实验,看看我能得到什么属性。


这对我来说是无效的...

  string resource = "\\Scripts\\Test\\Canvas\\00.ex5::aaa";     // получили путь к ресурсу созданному другим скриптом

//  if(ObjectGetString(0, "aaa", OBJPROP_BMPFILE, 0, resource))
  if(ObjectSetString(0, "aaa", OBJPROP_BMPFILE, 0, resource))   // работает любая строка, хоть эта, хоть закомментированная выше
   {
    Print(ObjectGetString(0, "aaa", OBJPROP_NAME));             // имя есть
    Print(ObjectGetString(0, "aaa", OBJPROP_BMPFILE));          // путь к ресурсу есть
    Print(ObjectGetString(0, "aaa", OBJPROP_TEXT));             // текста нету.....
    Print(ObjectGetInteger(0, "aaa", OBJPROP_XDISTANCE));       // это значение тоже есть
   }

而如何获得一个数组我找不到。这有可能吗?

 
Alexey Viktorov:

正是如此。毕竟,问题不是从图片中获得,而是从资源中获得。然后我就失去了我自己寻找的东西。我打算做实验,看看能得到什么属性。


这对我来说是无效的...

而且我找不到如何获得一个数组。这有可能吗?

我认为ResourceReadImage()或类似的东西应该有帮助。

 
Alexey Viktorov:

代码当然是我的,所以它是开放的。我只是想,如果屏幕上有一个日期,为什么还要把它保存在某个地方,当你可以得到...只要你能得到它,哈哈哈,好样的。

好吧,有点像你可以从一个文本框中获得一个字符串,并从其中拉出一部分字符串。但是,不幸的是,没有这样的事情。

你真的很了不起 :))
一箱电池给一个科学手表,虽然有创意,但确实不是最好的解决方案。
 
Andrey Barinov:
我认为ResourceReadImage()或类似的东西应该有帮助。

我找到了,但对我来说没有任何作用。我试图将一个数组转换为字符串,但数组类型不匹配。无论我怎么扭曲它,它都不起作用。也许我做错了什么,但还没有新的想法。

 
Alexey Viktorov:

我找到了,但对我来说没有任何作用。我试图将一个数组转换为字符串,但数组类型不匹配。无论我怎么转弯,它就是不工作。也许我做错了什么,但还没有新的想法。

如何将像素颜色数据翻译成字符串?而最重要的是,为什么?
你得到一个位图图像,然后你可以尝试识别它,但这是一门独立的科学 :)
 
Nikolai Semko:
你真的很了不起:)))
一个装满电池的手提箱用于科学时钟,虽然很有创意,但确实不是最好的解决方案。

尼古拉,但这不是一个必然适用的解决方案。毕竟,你的动画片来自同一个系列,很美,但没有在交易中应用的可能性。

 
Andrey Barinov:
如何将像素颜色数据翻译成字符串?而最重要的是,为什么?
你得到一个位图图像,然后你可以尝试识别它,但这是一门独立的科学 :)

啊,好吧,那是...我不知道))。

一般来说,我可能会放弃这个想法。也许它真的不是那种东西。

 

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特点、微妙之处以及技巧

fxsaber, 2017.10.31 08:11

// Сохранение Bitmap-объекта в bmp/gif/png-файле (прозрачность не учитывается)
bool BitmapObjectToFile( const long chartID, const string ObjName, const string FileName, const bool FullImage = false )
{  
  const ENUM_OBJECT Type = (ENUM_OBJECT)ObjectGetInteger(chartID, ObjName, OBJPROP_TYPE);  
  bool Res = (Type == OBJ_BITMAP_LABEL) || (Type == OBJ_BITMAP);
             
  if (Res)
  {
    const string Name = __FUNCTION__ + (string)MathRand();

    ObjectCreate(chartID, Name, OBJ_CHART, 0, 0, 0);
    ObjectSetInteger(chartID, Name, OBJPROP_XDISTANCE, -1 e3);
    
    const long chart = ObjectGetInteger(chartID, Name, OBJPROP_CHART_ID);
        
    Res = ChartSetInteger(chart, CHART_SHOW, false) && ObjectCreate(chart, Name, OBJ_BITMAP_LABEL, 0, 0, 0) &&
          ObjectSetString(chart, Name, OBJPROP_BMPFILE, ObjectGetString(chartID, ObjName, OBJPROP_BMPFILE)) &&
          (FullImage || (ObjectSetInteger(chart, Name, OBJPROP_XSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_XSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_YSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_XOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_XOFFSET)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_YOFFSET)))) &&
                         ChartScreenShot(chart, FileName, (int)ObjectGetInteger(chart, Name, OBJPROP_XSIZE),
                                                          (int)ObjectGetInteger(chart, Name, OBJPROP_YSIZE));
    ObjectDelete(chartID, Name);
  }                    

  return(Res);
}


应用

// Сохраняет в png-файлах все Bitmap-объекты текущего чарта
void OnStart()
{  
  for (int i = ObjectsTotal(0) - 1; i >= 0; i--)
  {
    const string Name = ObjectName(0, i);
    
    BitmapObjectToFile(0, Name, (string)ChartID() + "\\" + Name + ".png");    
  }      
}


SZY 还实现了BMP->GIF/PNG文件转换器。

 
Alexey Viktorov:

新问题:我可以从画布的资源中读取文本吗?

例如这几句,或其中任何一句。

目的:在kanvas中,有一行包含了一个日期。这是你要读的日期。

或者使用一种久经考验的老方法,GV、文件、图形或其他东西。

你可以使用ResourceReadImage从一个资源中读取数据,但要做到这一点,你需要使用ResourceCreate将其写入那里。ResourceCreate函数只接受一个uint数据的数组,如果我们想写一个其他数据类型的数组,我们必须使用union。在其中声明几个不同类型的数组。之后,我们可以在资源中存储任何数据,包括字符串。要将字符串转换为char类型,请使用StringToCharArray,反之则使用CharArrayToString。因此,这根本不是关于画布的问题,而是关于资源的问题,你可以在联合体的帮助下向其中写入任何类型的数据。