비트맵 파일을 fopen으로 불러와서 좌우반전시키고 fwrite로 저장하는 것까지는 성공 했습니다
그런데 제가 하고싶은건 파일을 저장하는게 아니라
불러온 비트맵 파일을 좌우반전 시켜서 그대로 화면에 출력하고 싶은데
도대체 어떤식으로 해야 할 지 모르겠습니다...
bool CTexture::VerticalBitmap(HDC hDC, const char* pFileName){
FILE* pFile = NULL;
fopen_s(&pFile, strPath.c_str(), "rb");
if (!pFile) {
return false;
}
BITMAPFILEHEADER m_fh;
BITMAPINFOHEADER m_ih;
fread(&m_fh, sizeof(unsigned char), sizeof(m_fh), pFile);
fread(&m_ih, sizeof(unsigned char), sizeof(m_ih), pFile);
m_iWidth = m_ih.biWidth;
m_iHeight = m_ih.biHeight;
fread(m_RGBTable, sizeof(unsigned char), 1024, pFile);
m_vecPixel.clear();
m_vecPixel.resize(m_iWidth * m_iHeight);
fread(&m_vecPixel[0], sizeof(unsigned char), m_vecPixel.size(), pFile);
unsigned char fPixel;
for (int i = 0; i < m_iWidth / 2; ++i) {
for (int j = 0; j < m_iHeight; ++j) {
fPixel = m_vecPixel[(m_iWidth) * (j + 1) - (i + 1)];
m_vecPixel[(m_iWidth) * (j + 1) - (i + 1)] = m_vecPixel[m_iWidth * j + i];
m_vecPixel[m_iWidth * j + i] = fPixel;
}
}
}
strPath는 파일 경로를 string 타입으로 얻어온거구요
8비트 비트맵인지라 팔레트 정보가 있습니다.
SetPixel로 하나 하나 출력해보니 아무리 메모리DC에 출력을 해도 깜빡임이 멈추질 않더라구요
제발 도와주십쇼 ㅠㅠ
fwrite에 파일 넣지말고 stdout 넣으면 되는거 아니냐 - dc App
2D짤 어딨노 게이야
감속력 오지게 짜놨네,,, 더블버퍼링을 하던가 비트맵으로 재구성하던가
이게 맞는듯
비트맵 재구성은 파일로 만들어야 한다는 뜻인가요? 파일로 만들고 그 파일을 다시 읽어서 로드해야한다는 건데 SetPixel로 일일히 찍는 것보다 그게 훨씬 빠른건가요?
더블버퍼링은 되어있는데 지금 DC를 어떻게 얻어와야 할지 몰라서 일단 출력부터 해보려구요...
https://stackoverflow.com/questions/15930528/how-to-convert-an-array-of-pixels-to-hbitmap
2D 짤 없어서 답변 부족한듯