Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Darstellung des Rechtecks beim Markieren eines Bereiches

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.05.2005, 10:06 Uhr
~LukasS
Gast


Hallo,
ich habe eine PictureBox, in der ich Zeichnungen darstelle. Nun wollte ich eine Zoomfunktion einfügen. Dabei wäre es am Besten, wenn der Anwender sich einen Bereich markieren könnte und dieser würde dann auch vergrößert dargestellt werden.
Meine Frage lautet: Wie kann ich das Markieren mit gehaltener Maustaste realisieren? Also dass dort dieser Rechteck beim markieren auftaucht. Gibt es hierfür eine Funktion?

Ich suche schon seit Tagen danach, aber bisher ohne Erfolg.

Bin für jede Hilfe dankbar!

Lukas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2005, 11:20 Uhr
Tommix



Hallo,
sieh Dir mal CDC::DrawDragRect an.

- Tommix

Dieser Post wurde am 11.05.2005 um 11:20 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2005, 14:05 Uhr
~LukasS
Gast


Danke, funktioniert soweit gut, nur wenn ich jetzt mit der Maus einen Bereich markieren will, werden pixelweise linien gezeichnet. Wie kann ich diese Löschen? Mit der Funktion RedrawWindow() des Picturesteuerelemts funktioniert das zwar, aber beim Markieren sieht man die Linien nicht mehr. Was kann ich machen?

Danke nochmal!

Lukas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.05.2005, 15:52 Uhr
mmc20
puss in boots


also, ganz einfach das rect "merken" und vor dem zeichnen des neuen rect's ( bei mousemove ) einfach das "gemerkte" noch mal zeichnen lassen, damit wirds wieder entfernt, brauchst also nicht jedesmal ein redrawwindow machen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.05.2005, 16:51 Uhr
mmc20
puss in boots


ich hatte das mal so gelöst: (ist schon ne weile her... geht evtl besser zu machen)

C++:
// members :private
CPoint cpOld;
CRect crOld;

// OnInitDialog() oder andere initialisierung
    cpOld = CPoint(-1,-1);
    crOld = CRect(-1,-1,-1,-1);
//...

void CDeinDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// hier noch abfangen wenn sich der mauscursor nicht über deiner
// zeichenfläche befindet
    cpOld = CPoint(-1,-1);
    DrawSelBox( point );

    CDialog::OnLButtonDown(nFlags, point);
}

void CDeinDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// hier noch abfangen wenn sich der mauscursor nicht über deiner
// zeichenfläche befindet
    DrawSelBox(CPoint(-1,-1));

    CDialog::OnLButtonUp(nFlags, point);
}

void CDeinDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// hier noch abfangen wenn sich der mauscursor nicht über deiner
// zeichenfläche befindet
    if ( (nFlags & MK_LBUTTON) == MK_LBUTTON )
        DrawSelBox( point );

    CDialog::OnMouseMove(nFlags, point);
}

void CDeinDlg::DrawSelBox(CPoint point)
{
    CRect rect(0,0,0,0);
    CWnd* wp = GetDlgItem( IDC_STATIC_ZEICHENFLAECHE );
    CDC* pDC = wp->GetDC();

    if ( cpOld.x == -1 )
        cpOld = point;
    else {
        pDC->DrawFocusRect( &crOld );
        if ( point.x == -1 ) {
            wp->ReleaseDC( pDC );
            return;
        }
    }

    rect = CRect( cpOld.x, cpOld.y, point.x, point.y );
    rect.NormalizeRect();

    pDC->DrawFocusRect( &rect );
    crOld = rect;

    wp->ReleaseDC( pDC );
    return;
}


Dieser Post wurde am 11.05.2005 um 17:00 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.05.2005, 10:32 Uhr
~lukasS
Gast


Wow, danke! Es funktioniert!

Danke nochmal!!!!

Lukas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: