0

我正在研究如何使用带有 Alpha 32 位文件的位图对象的位图对象,但一无所获。我已经在几个论坛中询问过这个 Bitmap Alpha 32 位文件。

只是我的目的是如何使用我的 alpha 图像?我希望下面的屏幕截图可以帮助我澄清我的问题。如何在图表中使用我的 alpha 图像?

下面的代码是我试图将位图对象与 Alpha 通道一起使用,但我不能。

#property strict

string filename = "\\Images\\alpha.bmp";

//---
int OnInit()
{
    ObjectCreate( 0, "bitmap alpha", OBJ_BITMAP, 0, TimeCurrent(), Ask );
    ObjectSetString( 0, "bitmap alpha", OBJPROP_BMPFILE, filename );
    //---
    return(0);
}

void OnDeinit(const int reason)
{
    ObjectDelete( "bitmap alpha" );
    //---
    return;
}

在此处输入图像描述

4

3 回答 3

2

不知道该给你什么建议,也许你可以在机翼部分找到很多不同的箭头,这样就不用使用任何自定义图片了。这就是我从未想过您的问题的原因,并且由于您在其他论坛上没有回复 - 可能其他开发人员也不关心此类选项。

于 2017-04-17T10:26:32.250 回答
1

实施总结:

MQL4从 build 1065 开始,不支持任何特定的图形操作工具,但允许转换特定格式的位图文件,以便以后通过所谓的RESOURCE使用。

0 . 不.BMP支持其他文件格式
1。除了-bits 的颜色深度,没有其他{ 24 | 32 }支持
2。没有可用的 RGB 颜色平面操作,因此所有准备工作都将在外部执行MQL4(无论是通过 Python、ImageMagick 中流行的 OpenCV 或 PIL 模块等可编程工具,还是通过位图操作编辑器手动)
3。仅支持文件接口,因此位图数组内容必须预先格式化并物理存储为相对于 a 的磁盘文件,terminal_data_folder\MQL4\以便通过4加载。一些微不足道的像素阵列剪辑以扩展格式提供,作为最初导入的RESOURCE 5的更新ResourceReadImage()
ResourceCreate()
. 如果应该在 下处理 Alpha 通道,则将在6中使用 -Color 处理方法中[4]的一个选项。但是可能会出现错误,因此应该使用进一步的调试细节。7 . 在没有错误的情况下,可以尝试部署这种准备好的资源以在图形对象中使用。{ COLOR_FORMAT_ARGB_RAW | COLOR_FORMAT_ARGB_NORMALIZE }
{ ERR_RESOURCE_UNSUPPORTED_TYPE | ... }ResetLastError(); ... GetLastError();
[6]{ OBJ_BITMAP_LABEL | OBJ_BITMAP }

鉴于以前有一些奇怪的颜色管理工件的经验,这些工件一个一个地叠加在一起,任意设置 HSV 编码的颜色,GUI 结果不需要轻易产生预期和/或令人愉悦的视觉组合(在商业项目中,我的团队宁愿使用一个外部的、远程的 GUI 显示和 MMI 交互设施(具有多窗口、完全独立、可组合的 MVC 架构的独立远程交易终端),它处于完全可编程控制之下,与 Linux / 中的 MT4/MQL4 设施无关Windows 生态系统)。 在此处输入图像描述

于 2017-04-18T14:09:33.170 回答
1

Alpha 通道位图必须设置为#resource 或不显示。这在 MQL4 文档中找不到,但它是唯一对我有用的方法。

示例 - 如果您的图像位于 /TERMINAL/MQL4/Images/ ... ... 那么您将使用以下内容:#resource "\\Images\\alpha.bmp"然后您可以调用#define filename "::Images\\alpha.bmp"

然后使用“文件名”作为路径将图像添加到图表中。

于 2017-12-15T23:55:30.620 回答