Как повернуть растровое изображение в C ++ с помощью MFC? - PullRequest
1 голос
/ 28 июня 2010

как повернуть растровое изображение в c ++ с помощью MFC?Я не хочу использовать GDI.возможно ли это только путем изменения значений x и y в этом коде?

  CBitmap img;   
  CDC dc;  
  BITMAP bmp;  
  img.LoadBitmapW(IDB_BITMAP1);   
  img.GetBitmap(&bmp);   
  CDC* pDC = this->GetDC();   
  dc.CreateCompatibleDC(pDC);  
  CBitmap* pOld = dc.SelectObject(&img);   
  for(int y = 0; y < bmp.bmHeight; y++)   
  {      
      for(int x = 0; x < bmp.bmWidth; x++)     
      {         
          COLORREF rgb = dc.GetPixel(x, y);     
          BYTE r = GetRValue(rgb);       
          BYTE g = GetGValue(rgb);     
          BYTE b = GetBValue(rgb);            
          dc.SetPixel(x, y, RGB(r,g,b));      
      }   
  }   
  pDC->BitBlt(200, 200, bmp.bmWidth, bmp.bmHeight, &dc, 0, 0, SRCCOPY);  
  dc.SelectObject(pOld);

, пожалуйста, кто-нибудь ответит в ближайшее время, так как это последний день для работы над проектом, завтра его представление.

1 Ответ

1 голос
/ 28 июня 2010

Спрашивать о рисовании с помощью MFC, но не использовать GDI, все равно, что спрашивать о том, как плавать, не намокнув.Что касается рисования, MFC - это оболочка thin вокруг GDI, поэтому все, что вы делаете с MFC, транслируется прямо в GDI с добавлением небольшого количества синтаксического сахара (и в этой области количество синтаксическогосахар был основан на рационе диабетика).

Тем не менее, да, обмен x и y в ваших циклах может сделать примерно правильную вещь (в зависимости от желаемого направления вращения, с одной стороны)) - хотя, честно говоря, вы должны серьезно задуматься о том, чтобы полностью удалить этот код.Вы используете SetPixel (т.е. GDI) для рисования в любом случае;Есть много лучших способов сделать это, чем это (судя по всему, вы можете извлечь огромную выгоду из CreateDIBSection).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...