帆布很酷! - 页 6

 
Vladimir Karputov:

canvas.Rectangle不是一个对象,它是一个画一堆像素的命令。这就像一声枪响--子弹打出去了,就好办了。没有反馈。

谢谢你的无反馈意见--知道了。

拉希德-乌马罗夫

有一篇题为《探索CCanvas类》的文章。实现图形对象的透明度,应该有一个解决方案。

我已经查看了217次,现在已经打开了,但我没有看到任何解决方案。

我需要在OnTick()中改变画布和框架颜色的实时例子。

谢谢你!

 
Vitaly Muzichenko:

谢谢你的联系--知道了。

我看了217次,现在已经打开了,但我还没有看到解决方案。

需要一个在OnTick()中改变画布和框架颜色的实际例子。

谢谢你!

根据我的代码,只是停留在改变画布颜色和画一个框架。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%40==0)
     {
      m_canvas.Erase(ColorToARGB(clrBlue,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrRed,255));
      m_canvas.Update();
      return;
     }
   if(counter%20==0)
     {
      m_canvas.Erase(ColorToARGB(clrRed,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrBlue,255));
      m_canvas.Update();
      return;
     }
  }


因为我使用透明的颜色,所以我在创建画布时指定了"COLOR_FORMAT_ARGB_NORMALIZE"。

//--- create canvas
   if(!m_canvas.CreateBitmapLabel("SampleCanvas",5,15,700,300,COLOR_FORMAT_ARGB_NORMALIZE))
附加的文件:
 
Vladimir Karputov:

根据我自己的代码,我只是把改变画布的颜色和画一个框架。


因为我使用透明的颜色,所以我在创建画布时指定了"COLOR_FORMAT_ARGB_NORMALIZE"。

我现在就去看看,谢谢!

我期望得到的东西--很久以前就得到了,它是一个几乎透明的画布,有一个框架和选区,但现在我需要改变颜色,这不起作用。


 
Vitaly Muzichenko:

我现在就去看看,谢谢!

我期望得到的东西--早就得到了,它是一个几乎透明的画布,有边框和选择,但现在我需要改变颜色,这不起作用。


问题可能出在ENUM_COLOR_FORMAT(创建画布时)和获取颜色的方法上。

 
Vitaly Muzichenko:

在OnInit中,我创建了一个画布

然后我需要在OnTick中把10:00的颜色改为灰色,并在11:00再次恢复到原来的状态。

它不起作用。

问题。

如何改变画布和框架的颜色--不参考对象名称?

谢谢你!

我有一种感觉,你把颜色弄乱了。

这句话的含义是什么。

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

COLOR_FORMAT_ARGB_NORMALIZE不需要用背景色来 填充画布,而是用0来填充。

canvas.Erase(0);

因为它意味着画布是完全透明的。

使用16色的表示法也很方便。

例如:

0x00000000 - 完全透明的黑色

0xFF000000 - 不透明的黑色

0xFFFFFFFFFF - 不透明的白色

0xFFFF0000 - 不透明的红色

0xFF00FF00 - 不透明的绿色

0xFF0000FF - 不透明的蓝色

0x8000FF00 - 半透明的绿色

0x80FFFFFFFF - 半透明的黑色

0xFF808080 - 灰色

等。

 
Vladimir Karputov:

可能是ENUM_COLOR_FORMAT(创建画布时)和获取颜色的方法有问题。

问题解决了。

我的代码在关闭终端 时没有删除画布,所以启动时画布已经在图表上了,所以没有初始化,属性变化不知道应用在哪里。

谢谢大家!

 
Nikolai Semko:

我有一种感觉,你把颜色弄乱了。

这句话有什么意义?

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

这条线的意义在于,如果没有它,你会得到这样的画面


如果与线,那么这是正确的,一个漂亮的框架与我选择的颜色


 
Vitaly Muzichenko:

问题解决了。

我的代码在关闭终端时没有删除画布,所以当我开始时,画布已经在图表上了,所以它没有初始化,属性变化不知道应用在哪里。

谢谢大家!

嗯,你真的无法一下子猜到狗在哪里 :)

 

示范一个具有位图缩放功能的脚本

在Ex5文件中,有一个相当大的BMP文件作为资源。


附加的文件:
TestScaling.ex5  784 kb
 
Nikolai Semko:

栅格缩放脚本演示

不,这真的令人印象深刻。

但是,你必须制作某种有用的附加组件,利用所有这些Canvas的功能。

这样,你的发展就不会遭受与CGA适配器同样的命运--一个美妙的图形适配器,被同时代人误解和低估了。

我自己一直认为CGA "一如既往地蹩脚",打败了八位的Commodore 64或Sinclair Spectrum。但最近发现,仅仅是因为缺乏人气--几乎没有人使用这张卡片的所有机会。而且几乎没有任何游戏可以在上面与八位家用电脑竞争。

如果IBM推广CGA,如果这个演示在1981年出现--CGA会更受欢迎,可能EGA会在后来发布。


当我看到这个屏幕时,我无法相信这是在带有16K显存的老式CGA适配器上实现的,它连接到普通的家用电视上(RGB显示器根本不适合这样做。 这就是开发者的想法--RGB显示器上的文本质量较高,但调色板较差,但在带有复合输入的家用电视上有丰富的图形可能性,文本不好读)。