Hintergrund neu zeichnen
-
Hallo, für meinen Kompass brauche ich eine Methode, welche mir den alten Zeiger übermalt! Wie kann ich die bereits gezeichneten Linien überschreiben? Anbei meine
Paint Methode:void CAttitude_3Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext für Zeichnen SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); Gdiplus::Graphics g(GetDC()->GetSafeHdc()); //if(FLAG_kompass_zeichnen) paint_kompass(g); paint_zeiger(g,kompass_min); } }Besten Dank!
Gruß
daMike
-
Also du hast einfach eine Paint Methode und du willst den DIalog kommplett neu zeichen ?!
Referenzen:
CWnd::Invalidate
-
Klasse .. funktioniert! Gibt es eine Möglichkeit das flimmern zu unterdrücken wenn das Window neu gezeichnet wird?
-
Versuchs mal Invalidate( FALSE ).
-
-
void CAttitude_3Dlg::OnPaint(void) { CPaintDC dc(this); // Gerätekontext für Zeichnen if (IsIconic()) { SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); CDC memDC; memDC.CreateCompatibleDC(&dc); Gdiplus::Graphics g(memDC.GetSafeHdc()); //if(FLAG_kompass_zeichnen) paint_kompass(g); paint_zeiger(g,kompass_min); dc.StretchBlt(0, 0, 0, 0, &memDC, 0, 0, 0, 0, SRCCOPY); // Anpassen... } }1. Nimm den PaintDC ...
2. Erstell
-
sehr zu empfehlen!