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

 
Nikolai Semko :

안드레이 감사합니다 :)

Andrey, "비디오로 저장할 수 있습니까?"라는 질문에 대한 논리적 추론을 설명하겠습니다.
어떤 질문에 대답하기 전에 나는 가능한 수단을 통해 질문을 하는 사람과 그 수준을 이해하려고 노력합니다. 첫째, 당신의 답을 좀 더 정확하고 명료하게 작성하기 위해서, 둘째, 질문으로 질문에 대답하지 않도록 매우 모호한 질문의 의미를 이해하기 위해서입니다.
물론, 나는 당신의 프로필에 갔다.
  • 162라고 가정하고 포럼에서 2-5개월 동안 등급을 본다면 초보자가 질문을 하고 있다는 것을 이해할 것입니다.
그리고 간단히 대답하겠습니다. "현재 MT5에는 동영상 저장이 구현되어 있지 않지만 원하는 경우 모든 작업을 수행할 수 있습니다."
  • 하지만 포럼에서 귀하의 이름이 자주 떠올랐고 귀하의 프로필에서 제가 포럼에서 10년 이상, 나보다 5배는 더 많은 경험을 가진 프로그래머를 상대하고 있다는 것을 깨달았습니다. 메시지의 수와 그의 무기고에는 최소한 1개의 기사, 5개의 완성된 작업 및 3개의 코드가 KB에 있으며 등급은 내 것보다 2배 이상 높습니다.
그래서 내 생각에 당신은 MT5의 기능에 매우 정통하고 나처럼 문서를 잘 알고 있으며, 당신의 질문은 비디오를 저장할 수 있는 잠재적 가능성에 관한 것이고 당신은 내 의견에 관심이 있다는 결론을 내렸습니다. 나는 Canvas에서 더듬거리고 있습니다.
그래서 잠재적인 기회의 형태로 답변을 드리기 시작했습니다.
  • 아니면 당신은 "그리고 당신의 빗자루는 날 수 있습니다."

그러나 낙서꾼은 일반적으로 자신을 매우 똑똑하다고 생각하는 사람들이기 때문에 특별히 걱정하지 않습니다. 합기도와 그들은 일반적인 웃음에 충돌합니다.


위협 그리고 달에 대해, 당신의 대답 NO는 나를 웃게 만들었습니다. 알아요 - 이것이 정답입니다. 그런 질문에 대한 나의 "틀린" 대답은 다시 말하지만 누가 나에게 이 질문을 하느냐에 따라 다를 것입니다.



당신은 많은 것을 아주 오랫동안 철학할 수 있지만 그 질문의 의미는 표면에 있었고 즉각적이고 명확하고 모호하지 않았습니다. 그리고 이 질문에 대한 답으로, 화면에서 비디오를 녹화하는 것과 관련하여 뭔가를 들고 다니는 것은 ... 이것은 뭔가)) 레벨에 대해 너무 많이 생각하고 싶다면. 그리고 MT5에 대한 문서는 그것과 어떤 관련이 있습니까?

 
Dmitry Fedoseev :

100년 전 Zorro는 캔버스를 통해 애니메이션 gif를 재생산하는 것을 시연했습니다. 이해할 수 없는 루프 비디오 시퀀스가 아니라 일반적인 애니메이션 gif입니다.

몰랐다. 이렇게 하려면 GIF 형식을 이해하고 이를 해부하고 프레임을 형성해야 합니다. 나는 그것이 매우 어렵다고 생각하지 않는다. 그러나 형식을 파악하면 쉽고 표준 벤드를 녹음할 수 있습니다.
 
Nikolai Semko :
몰랐다. 이렇게 하려면 GIF 형식을 이해하고 이를 해부하고 프레임을 형성해야 합니다. 나는 그것이 매우 어렵다고 생각하지 않는다. 그러나 형식을 파악하면 쉽고 표준 벤드를 녹음할 수 있습니다.

압축이 없으면 avi만큼 쉽습니다. 그리고 이것 저것 어렵지 않습니다. 방법만 알면 되지만 아직까지는 아무도 모릅니다. gif로 알 수 있는 기회가 더 많은 것 같습니다.

조언에주의를 기울이는 것이 좋습니다. 압축하지 않고 비디오를 만드는 방법을 알아도 멀리 가지 않을 것이고 파일 크기가 너무 커질 것이기 때문입니다.

 
Nikolai Semko :
왜 그렇게 결정했습니까?

대답에 따르면.

 
나는 비디오에 대해 생각할 때 압축 알고리즘에 대해 생각합니다. 코덱에 대해, 그렇지 않으면 어린이 장난감입니다.
 

또 다른 옵션이 있으며 아마도 가장 흥미롭고 유용할 것입니다. Win API: AVIFileOpen(), AVIFileCreateStream() 등

 
Nikolai Semko :

동적 시간대를 사용한 첫 번째 실험.

역학에서 EURUSD 전체 역사 쌍 :

.

프랙탈리티가 있습니다.

규범

창과 축척을 선택하려면 하단 레일이 필요합니다.


 
Nikolai Semko :

안드레이 감사합니다 :)

Andrey, "비디오로 저장할 수 있습니까?"라는 질문에 대한 논리적 추론을 설명하겠습니다.
어떤 질문에 대답하기 전에 나는 가능한 수단을 통해 질문을 하는 사람과 그 수준을 이해하려고 노력합니다. 첫째, 당신의 답을 좀 더 정확하고 명료하게 작성하기 위해서, 둘째, 질문으로 질문에 대답하지 않도록 매우 모호한 질문의 의미를 이해하기 위해서입니다.
물론, 나는 당신의 프로필에 갔다.
  • 162라고 가정하고 포럼에서 2-5개월 동안 등급을 본다면 초보자가 질문을 하고 있다는 것을 이해할 것입니다.
그리고 간단히 대답하겠습니다. "현재 MT5에는 동영상 저장이 구현되어 있지 않지만 원하는 경우 모든 작업을 수행할 수 있습니다."
  • 하지만 포럼에서 귀하의 이름이 자주 떠올랐고 귀하의 프로필에서 제가 포럼에서 10년 이상, 나보다 5배는 더 많은 경험을 가진 프로그래머를 상대하고 있다는 것을 깨달았습니다. 메시지의 수와 그의 무기고에는 최소한 1개의 기사, 5개의 완성된 작업 및 3개의 코드가 KB에 있으며 등급은 내 것보다 2배 이상 높습니다.
그래서 내 생각에 당신은 MT5의 기능에 매우 정통하고 나처럼 문서를 잘 알고 있으며, 당신의 질문은 비디오를 저장할 수 있는 잠재적 가능성에 관한 것이고 당신은 내 의견에 관심이 있다는 결론을 내렸습니다. 나는 Canvas에서 더듬거리고 있습니다.
그래서 잠재적인 기회의 형태로 답변을 드리기 시작했습니다.
  • 아니면 당신은 "그리고 당신의 빗자루는 날 수 있습니다."

그러나 낙서꾼은 일반적으로 자신을 매우 똑똑하다고 생각하는 사람들이기 때문에 특별히 걱정하지 않습니다. 합기도와 그들은 일반적인 웃음에 충돌합니다.


위협 그리고 달에 대해, 당신의 대답 NO는 나를 웃게 만들었습니다. 알아요 - 이것이 정답입니다. 그런 질문에 대한 나의 "틀린" 대답은 다시 말하지만 누가 나에게 이 질문을 하느냐에 따라 다를 것입니다.



 
Nikolai Semko :

...
샷을 어떻게 수집합니까?
ME에서 코드를 제거하는 방법을 이해하지 못했습니다.
스크린샷을 통해서만 이루어지더라도 여전히 잘 하고 있기 때문입니다. 나는 그들이 포장되어 있는 것을 본다.
당신의 작업은 주의를 기울일 가치가 있습니다.

Threat 비록 내가 지점을 만들었고 어떻게 든 역사적으로 내가 그것을 이끌고 있다는 것이 더 많이 밝혀졌습니다. tk. 저에게 캔버스는 취미이자 휴식입니다.
그러나 나는 여기에서 주인처럼 느껴지지 않고 여기에 일종의 사적인 영역이 있습니다. 문이 열려 있습니다. 모두 환영합니다. 모두 환영합니다. 그리고 트롤조차도 때때로 드라이브를 제공하기 때문입니다. :)

니콜라이 감사합니다.

//--------------------------------------------

인사 교육:

1. 간단한 "FastStone" 편집기에서 프레임을 수집하여 원하는 영역의 스크린샷을 만들거나 Camtasia로 클립을 촬영하고 프레임을 FastStone으로 전송합니다.

2. 프레임을 처리하고(그림자, 화살표, 텍스트 추가) .bmp 형식으로 Images\MyGif 폴더에 저장합니다(각 gif에는 자체 하위 폴더가 있음).

3. 프레임 이름은 "1.bmp", "2.bmp", "3.bmp",...여야 합니다. 이것은 GIF 생성 스크립트가 작동하는 데 필요합니다.

4. ME에서 스크립트를 열고 #resource를 통해 모든 프레임을 통합합니다.

//-------------------------------

스크립트 작동 방식:

1. 스크립트는 프레임을 반복하고 ReasourceReadImage를 통해 프레임을 읽습니다.

2. 스크립트는 새 프레임과 이전 프레임을 동시에 로드합니다. 1과 2, 2와 3, 3과 4.... 그리고 새 프레임과 이전 프레임의 픽셀 색상을 비교합니다. 색상이 변경된 경우 스크립트는 픽셀 번호와 새 색상을 배열에 씁니다. 따라서 이전 프레임 이후에 변경된 픽셀과 색상만 기록됩니다. 픽셀의 색상이 첫 번째 프레임 이후에 변경되지 않으면 이 색상의 픽셀이 한 번 기록됩니다. 이것은 첫 번째 압축 메커니즘입니다.

3. 두 번째 압축 메커니즘: 동일한 색상의 픽셀이 있는 행이 축소됩니다. 픽셀 행의 픽셀에서 픽셀로 연속적으로 반복되는 색상이 있는 경우 스크립트는 반복 계산 주기를 시작하고 시작 픽셀 수(반복 시퀀스가 시작된 시작 픽셀, 색상 및 반복 횟수)를 에 씁니다. 배열.

따라서 스크립트는 프레임을 압축하고 gif를 압축합니다. 주기가 끝나면 수집된 배열 이 gifa라는 파일에 기록되며 , 여기서 생성자는 cybcode를 읽은 후 이 배열을 로드합니다. 인터페이스에는 원하는 만큼 gif가 있을 수 있지만 각 gif는 해당 요소에 할당되고 배열의 시작 부분은 그래픽 코어의 요소 속성에 기록됩니다.

//--------------------------------

GIF 재생 메커니즘:

1. 각 gif에는 gif 배열에서 시작, 프레임 수, 프레임 크기, 프레임 간 일시 중지와 같은 여러 속성이 있습니다.

2. 특수 블록은 커널 개체를 순환하고 GIF 속성을 찾습니다. 블록은 다음을 확인합니다.

  • 요소에 gif가 있음
  • 요소의 표시 여부
  • 범위에 있는 요소입니까?

검사가 통과되면 블록은 특정 gif 주소에 있는 gif 배열에 액세스하여 다음을 확인합니다.

  • 프레임 카운터
  • 일시 중지 시간 카운터

이러한 검사를 통과하면 블록에서 gif 읽기를 진행합니다.

1. 블록은 gif가 그려진 캔버스를 로드합니다.

2. 블록은 현재 프레임을 읽고 압축을 풉니다.

  • 숫자로 필요한 픽셀을 찾고 일반 캔버스에서 해당 픽셀의 위치를 계산합니다.
  • 올바른 위치에 원하는 색상의 픽셀을 그립니다.
  • 하나의 색상으로 픽셀 시퀀스를 "압축 해제"합니다.

블록은 프레임 사이를 이동할 뿐만 아니라 프레임 사이의 일시 중지를 계산할 뿐만 아니라 다른 창에 있는 다른 요소의 다른 gif를 통해 이동하여 가시성 영역 또는 닫힌 창 뒤에 숨겨진 gif를 건너뜁니다.

//--------------------------------

여기 그런 작업이 있습니다. 나는 모든 것이 단순하다고 생각했지만, 내가 말했을 때 나는 복잡성에서 약간 "어리석은"것이었습니다. :).

추신. 이미지 크기가 800*600인 GIF는 최대 20회 이상 압축됩니다. char 배열에 모든 것을 쓸 수 있다면 압축은 4배 더 증가할 것입니다. 그러나 이것은 확실히 색상 팔레트의 빈곤으로 이어질 것입니다.
 
그러나 "gif"가 그것과 관련이 있습니까?