코드 설명 ¶
추�화 기초 �래스.
AddFrame(UINT ITEM)으로 í”„ë ˆìž„ì�„ ì¶”ê°€ì‹œí‚¤ê³ ì™¸ë¶€ì—�서 ì �ì ˆí•œ 타ì�´ë¨¸ë¥¼ 통해서 움ì§�ìž„ì�„ ì¡°ì ˆí•œë‹¤.(NextFrame())
beonit.exe
AddFrame(UINT ITEM)으로 í”„ë ˆìž„ì�„ ì¶”ê°€ì‹œí‚¤ê³ ì™¸ë¶€ì—�서 ì �ì ˆí•œ 타ì�´ë¨¸ë¥¼ 통해서 움ì§�ìž„ì�„ ì¡°ì ˆí•œë‹¤.(NextFrame())
코드 ¶
~cpp
class CmyAnimation{
protected:
vector<UINT> m_frameList;
int m_nowFrame;
private:
void init(){
m_nowFrame = 0;
}
public:
CmyAnimation(){
init();
}
void nextFrame(){
if(m_nowFrame < int(m_frameList.size())-1)
m_nowFrame++;
else m_nowFrame = 0;
}
int getFrameSize(){
return int(m_frameList.size());
}
void addFrame(UINT ITEM){
m_frameList.push_back(ITEM);
}
virtual void drawFrame(CmyDouBuffDC* dc)=0;
};
----
GIF í�¬ê¸° ¶
ê²°ë¡ ¶
ìž�ë�™ì �ì�¸ ì—�니메ì�´ì…˜ì�€ 불가능. í”„ë ˆìž„ë§ˆë‹¤ ì—�니메ì�´ì…˜ ê°�ì²´ê°€ 스스로ì�˜ ìƒ�태를 파악하여 새로 BMP를 ë¿Œë ¤ 주어야 함.
왜? ¶
CDC를 확장한 ë ˆë°�즈프로ì �트/그리기DCì—� ìž�ë�™ ì—�니메ì�´ì…˜ì�„ 구현 í•˜ê³ ìž� 하였다.
하지만 OnDrawì—�서 ìƒ�성ë�˜ê³ 파괴ë�˜ëŠ” 그리기DCì—�서 í”„ë ˆìž„ë‹¨ìœ„ì�˜ ì—�니메ì�´ì…˜ 처리는 옳지 않다. 만약 하게 ë�œë‹¤ë©´ ëª¨ë“ ë ˆë°�들ì�˜ ê°�체를 그리기DC안ì—� 넣어야 í• ê²ƒì�´ë‹¤.
하지만 OnDrawì—�서 ìƒ�성ë�˜ê³ 파괴ë�˜ëŠ” 그리기DCì—�서 í”„ë ˆìž„ë‹¨ìœ„ì�˜ ì—�니메ì�´ì…˜ 처리는 옳지 않다. 만약 하게 ë�œë‹¤ë©´ ëª¨ë“ ë ˆë°�들ì�˜ ê°�체를 그리기DC안ì—� 넣어야 í• ê²ƒì�´ë‹¤.
대안 ¶
대안. 수ë�™ìœ¼ë¡œ ì§„í–‰ë�˜ëŠ” ì—�니메ì�´ì…˜ 작업ì�„ í�´ëž˜ì‹± í• ìˆ˜ 있ì�„ 듯-_- 버튼ì—�서 활용 가능 í• ë“¯
CmyAnimation ¶
ì—�니메ì�´ì…˜ì�´ 필요한 ê°�체들ì�€ ì�´ í�´ëž˜ìŠ¤ë¥¼ ìƒ�ì†� ë°›ì�Œìœ¼ë¡œì„œ ì—�니메ì�´ì…˜ 처리를 í• ìˆ˜ 있다.
ì�´ í�´ëž˜ìŠ¤ëŠ” ë�”블버í�¼ë§�ê³¼ bmp그리기를 ìž�ë�™í™” 시켜둔 ë ˆë°�즈프로ì �트/그리기DC(CmyDouBuffDC)를 사용하여 드로잉ì�„ 수행한다. (CDC를 사용하는 ë�„ 있지만... 편ì�˜ë¥¼ 위해서...)
ì�´ í�´ëž˜ìŠ¤ëŠ” ë�”블버í�¼ë§�ê³¼ bmp그리기를 ìž�ë�™í™” 시켜둔 ë ˆë°�즈프로ì �트/그리기DC(CmyDouBuffDC)를 사용하여 드로잉ì�„ 수행한다. (CDC를 사용하는 ë�„ 있지만... 편ì�˜ë¥¼ 위해서...)










