캔버스 멋지다! - 페이지 6

 
Vladimir Karputov :

Canvas.Rectangle은 객체가 아니라 픽셀 묶음을 그리는 명령입니다. 총알이 날아와 당신의 이름을 기억하는 것과 같습니다. 의견은 안 받아요.

연결이 되지 않아 감사합니다. 이해했습니다.

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에서 캔버스를 만듭니다.

다음으로 10:00에 OnTick의 색상을 회색으로 변경하고 11:00에 다시 원래 상태로 돌아가야 합니다.

작동하지 않음:

문제:

캔버스 및 프레임 색상을 변경하는 방법 - 개체 이름에 대한 바인딩이 없습니까?

고맙습니다!

꽃으로 마음을 정하신 것 같아요.

이 줄의 의미는 무엇입니까?

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

COLOR_FORMAT_ARGB_NORMALIZE 형식을 사용하면 배경색 으로 캔버스를 채울 필요가 없지만 0으로 채우면 됩니다.

canvas.Erase( 0 );

캔버스가 완전히 투명하다는 것을 의미하기 때문입니다.

16번째 형식의 색상 표현을 사용하는 것도 편리합니다.

예를 들어:

0x00000000 - 완전히 투명한 검정색

0xFF000000 - 불투명한 검정

0xFFFFFFFF - 불투명한 흰색

0xFFFF0000 - 불투명한 빨간색

0xFF00FF00 - 불투명한 녹색

0xFF0000FF - 불투명한 파란색

0x8000FF00 - 반투명 녹색

0x80FFFFFF - 반투명 검정

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를 고려했습니다. 8비트 Commodore 64 또는 Sinclair Spectrum 그래픽에 "최소한" 손실이 있습니다. 그리고 최근에 낮은 대중화 때문에 거의 아무도이 카드의 모든 풍부한 기능을 사용하지 않는 것으로 나타났습니다. 그리고 8비트 가정용 컴퓨터와 경쟁할 수 있는 게임이 거의 없었습니다.

IBM이 CGA 기능을 대중화했다면 이 데모가 1981년에 나왔다면 CGA가 훨씬 더 유명해졌을 것이고 아마도 EGA는 나중에 나왔을 것입니다.


이 풍부한 색상을 보고 일반 가정용 TV에 연결된 16K 비디오 메모리가 있는 구형 CGA 어댑터에서 이것이 가능하다는 사실조차 믿을 수 없습니다(RGB 모니터는 여기에 완전히 적합하지 않습니다. 이것이 아이디어였습니다 개발자의 - RGB 모니터에서 더 나은 텍스트, 그러나 동시에 열악한 컬러 그래픽 팔레트, 그러나 복합 입력이 있는 가정용 TV에서 읽기 어려운 텍스트로 풍부한 그래픽 가능성)