Announcement

Collapse
No announcement yet.

Linie über Bild

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linie über Bild

    Hallo, Leute. Ich brauche dringend Ihre Hilfe.
    Eine MDI-Anwendung.In neuem Fenster wird ein Bild
    geladen und über dieses Bild soll eine Kurve
    gezeichnet werden. Bild ist ziemlich groß.
    Deshalb ich habe den <b>VScrollView</b> benutze.
    Eigentlich alles funktioniert, aber überhaupt nicht so,
    wie ich es wollte. Kurve, die gezeichnet wird
    über Bild, ist auch sehr Gross. Um Sie zusehen
    muss auch geschrollt werden. Und hier kommt das Problem.
    Sobald ich Fenstergröße geändere, pasiert alles,
    wie ich es wollte. Aber wenn ich klicke auf
    den Pfeil des Schrollleiste, Linie sofort verschwindet.
    Wenn ich schreibe:<p><b>
    pDoc->UpdateAllViews(NULL);</b></p>
    Linie bleibt, aber das Fenster fackelt
    wie verrückt. Hier ist meine Code.
    Bestimmt gibt's andere Lösung für dieses Problem.
    Ich kenn ihn aber nicht. Und wäre dankbar für jeder Hilfe.

    P.S. Um Bilde zu anzeigen, ich benutze CImage.
    <hr>
    <p><b>

    oid CKurierView::OnDraw(CDC* pDC)<br>
    {<br>
    CKurierDoc* pDoc = GetDocument();<br>
    ASSERT_VALID(pDoc);<br>
    <br>
    CPoint pos(GetScrollPosition());<br>
    CRect rect;<br>
    GetClientRect(&rect);<br>
    int width = rect.right - rect.left;<br>
    int height = rect.bottom - rect.top;<br>
    <br>
    if (pDoc->GetImage())<br>
    {<br>
    int x = -pos.x;<br>
    int y = -pos.y;<br>
    if (width >= pDoc->GetImage()->GetWidth())<br>
    x = (width - pDoc->GetImage()->GetWidth())/2;<br>
    if (height >= pDoc->GetImage()->GetHeight())<br>
    y = (height - pDoc->GetImage()->GetHeight())/2;<br>
    <br>
    CDC *dc = GetDC();<br>
    CPalette *hOldPal = 0;<br>
    if (pDoc->GetImage()->GetPalette())<br>
    {<br>
    hOldPal = dc->SelectPalette(pDoc->GetImage()->GetPalette(), TRUE);
    dc->RealizePalette();
    }

    if (pDoc->GetStretchMode())
    {
    SetScrollSizes(MM_TEXT,
    CSize(0,0));
    pDoc->GetImage()->Stretch(dc, 0, 0, width, height);
    }
    else
    {
    SetScrollSizes(MM_TEXT,
    CSize(pDoc->GetImage()->GetWidth(), pDoc->GetImage()->GetHeight()));
    pDoc->GetImage()->Draw(dc, x, y);<br>
    <br>
    //Linie zeichnen<br>
    CPoint Erste, Zweite;<br>
    Erste.x = 70; Erste.y = 360;<br>
    Zweite.x = 300; Zweite.y = 460;<br>
    DrawLine(pDC,Erste ,Zweite);<br>
    pDoc->UpdateAllViews(NULL);<br>
    } <br>
    <br>
    dc->SelectPalette(hOldPal, TRUE);<br>
    <br>
    ReleaseDC(dc);<br>
    }<br>
    // TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen <br>
    <br>
    }<br>

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br>
    void CKurierView:rawLine(CDC * pDC, CPoint pStart, CPoint pEnd)<br>
    {<br>
    CRect lRect;<br>
    GetClientRect(lRect);<br>
    lRect.NormalizeRect();<br>
    CPen lSolidPen (PS_SOLID, 3, RGB(0,0,0));<br>
    CPen *pOldPen;<br>
    pOldPen = pDC->SelectObject(&lSolidPen); <br>
    <br>
    pDC->MoveTo(pStart );<br>
    pDC->LineTo(pEnd);<br>
    <br>
    pDC->SelectObject(pOldPen);<br>
    ReleaseDC(pDC);<br>
    }<br>
    </b></p><br>
    <hr>
Working...
X