Click here to Skip to main content
15,917,793 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionNeed advice on display rotation performance from experienced programmers... Pin
Jun Du7-Mar-07 7:55
Jun Du7-Mar-07 7:55 
AnswerRe: Need advice on display rotation performance from experienced programmers... Pin
CPallini7-Mar-07 8:16
mveCPallini7-Mar-07 8:16 
AnswerRe: Need advice on display rotation performance from experienced programmers... Pin
Mark Salsbery7-Mar-07 9:03
Mark Salsbery7-Mar-07 9:03 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
CPallini7-Mar-07 9:24
mveCPallini7-Mar-07 9:24 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Mark Salsbery7-Mar-07 9:30
Mark Salsbery7-Mar-07 9:30 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Jun Du7-Mar-07 9:35
Jun Du7-Mar-07 9:35 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Mark Salsbery7-Mar-07 9:44
Mark Salsbery7-Mar-07 9:44 
GeneralRe: Need advice on display rotation performance from experienced programmers... [modified] Pin
Mark Salsbery7-Mar-07 10:25
Mark Salsbery7-Mar-07 10:25 
As an example, even this totally un-optimized GDI code uses about 18% CPU (GDI+ only used to
load the bitmap - it's converted to a HBITMAP) ...
Gdiplus::Color clr(0xF0,0xF0,0xF0);

HBITMAP bmp;
if (Gdiplus::Ok == SrcBitmap.GetHBITMAP(clr, &bmp))
{
   //BITMAP bitmapstruct;
   //GetObject((HGDIOBJ)bmp, sizeof(BITMAP), &bitmapstruct);

   HDC hDestDC = ::GetDC(*this);
   HDC hMemDC = ::CreateCompatibleDC(hDestDC);

   ::SetGraphicsMode(hDestDC, GM_ADVANCED);

   HGDIOBJ hOldBitmap = ::SelectObject(hMemDC, (HGDIOBJ)bmp);

   REAL angle = 0.0f;
   for (int i = 0; i < 125; ++i)
   {
      static REAL pi = 3.1415926535f;

      REAL angleradians = (angle * pi) / 180.0f;
      REAL anglesin = ::sin(angleradians);
      REAL anglecos = ::cos(angleradians);

      XFORM XForm;
      XForm.eM11 = anglecos;
      XForm.eM12 = anglesin;
      XForm.eM21 = -anglesin;
      XForm.eM22 = anglecos;
      XForm.eDx = 450.0f;
      XForm.eDy = 450.0f;

      //::ModifyWorldTransform(hDestDC, &XForm, MWT_IDENTITY);  <code><- Not needed</code>

      ::SetWorldTransform(hDestDC, &XForm);

      ::BitBlt(hDestDC, -384, -384, SrcBitmap.GetWidth(), SrcBitmap.GetHeight(), hMemDC, 0, 0, SRCCOPY);

      angle += 5.0f;
      if (angle >= 360.0f)
         angle -= 360.0f;

      ::Sleep(20);
   }

   ::SelectObject(hMemDC, hOldBitmap);

   ::DeleteDC(hMemDC);
   ::ReleaseDC(*this, hDestDC);
   ::DeleteObject((HGDIOBJ)bmp);
}



-- modified at 11:03 Thursday 8th March, 2007

"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")

GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Jun Du7-Mar-07 16:38
Jun Du7-Mar-07 16:38 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Jun Du8-Mar-07 5:05
Jun Du8-Mar-07 5:05 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Mark Salsbery8-Mar-07 6:06
Mark Salsbery8-Mar-07 6:06 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Jun Du9-Mar-07 3:28
Jun Du9-Mar-07 3:28 
GeneralRe: Need advice on display rotation performance from experienced programmers... Pin
Mark Salsbery9-Mar-07 11:16
Mark Salsbery9-Mar-07 11:16 
QuestionHow to map message in each item of list control? Pin
Max++7-Mar-07 6:24
Max++7-Mar-07 6:24 
AnswerRe: How to map message in each item of list control? Pin
Hamid_RT7-Mar-07 7:01
Hamid_RT7-Mar-07 7:01 
QuestionC++ XML Transform Pin
Andy H7-Mar-07 6:19
Andy H7-Mar-07 6:19 
AnswerRe: C++ XML Transform Pin
Cedric Moonen7-Mar-07 7:20
Cedric Moonen7-Mar-07 7:20 
JokeRe: C++ XML Transform Pin
Maximilien7-Mar-07 7:24
Maximilien7-Mar-07 7:24 
JokeRe: C++ XML Transform Pin
Cedric Moonen7-Mar-07 7:27
Cedric Moonen7-Mar-07 7:27 
GeneralRe: C++ XML Transform Pin
Maximilien7-Mar-07 7:55
Maximilien7-Mar-07 7:55 
GeneralRe: C++ XML Transform Pin
Andy H7-Mar-07 7:54
Andy H7-Mar-07 7:54 
GeneralRe: C++ XML Transform Pin
Cedric Moonen7-Mar-07 10:33
Cedric Moonen7-Mar-07 10:33 
GeneralRe: C++ XML Transform Pin
Andy H7-Mar-07 11:05
Andy H7-Mar-07 11:05 
QuestionHow to get the local time in seconds? Pin
Yonggoo7-Mar-07 5:35
Yonggoo7-Mar-07 5:35 
AnswerRe: How to get the local time in seconds? Pin
led mike7-Mar-07 5:41
led mike7-Mar-07 5:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.