비트 맵 이미지를 시계 방향으로 90도 회전하려고합니다. infoheader의 width와 height의 너비와 높이를 변경해 보았습니다. 그래서 루프 할 때 높이, 너비가 반복되지만 회전하지 않으므로 X 및 Y 좌표로 입력해야합니다. 바이트 배열 섹션. 나는 이미 3 일 동안 갇혀 있었으므로 가능한 한 나를 도와주세요! 정말 고맙습니다. 코드를 통해 나를 안내해주세요, 다시 한번 감사드립니다!비트 맵 이미지에서 바이트 배열을 좌표 X와 Y로 읽어들입니까?
hfile = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
ReadFile(hfile, &bfh, sizeof(bfh), &written, NULL);
ReadFile(hfile, &bih, sizeof(bih), &written, NULL);
bmi.bmiHeader = bih;
int imagesize = bih.biHeight * bih.biWidth * 3; // Allocate necessary data for image
image = new BYTE[imagesize];
image1 = new BYTE[imagesize];
ReadFile(hfile, image, imagesize, &written, NULL);
SetDIBitsToDevice(hdc, 0, 0, bih.biWidth, bih.biHeight, 0, 0, 0,
bih.biHeight, image,&bmi,DIB_RGB_COLORS);
width = bih.biHeight;
height = bih.biWidth;
for(int x=0; x<height; x++)
{
for(int y=0; y<width; y++)
{
image1[(y*height+x)*3+0] = image[(y*height-1-x)*3+0];
image1[(y*height+x)*3+1] = image[(y*height-1-x)*3+1];
image1[(y*height+x)*3+2] = image[(y*height-1-x)*3+2];
}
}
SetDIBitsToDevice(hdc,height,0,width,height,0,0,0,bih.biHeight,image1,&bmi,DIB_RGB_COLORS);
width = bih.biHeight;
height = bih.biWidth;
ReleaseDC(hwnd, hdc);
return 0;
EndPaint(hWnd, &ps);
return 0;
실례합니다. 저의 지식이 부족하지만 그것을 할 수있는 다른 방법이 없습니까? Setpixel과 getPixel은 루프에서부터 내가 알고있는 것에서 느린 것처럼 보이는데, 회전하는 이미지로 나오도록 구조를 변경할 수있는 다른 방법이 없습니까? – Newbie
setPixel 및 getPixel을 씁니다. 그래서 빨리 쓰도록하십시오. 물론 인라인 될 수 있습니다. 코드를 따르기 만하면 훨씬 간단 해집니다. – CashCow