Avatar billede xenocypraz Nybegynder
01. september 2004 - 10:49 Der er 1 løsning

Kant rundt om billede. CBitMap

Hejsa,

I spørgsmål: http://www.eksperten.dk/spm/530891

fik jeg hjælp til at lave noget dobbelt buffering, min funktion endte med at se sådan ud,

void CTemperatureCtrl::OnPaint()
{
    CPaintDC dc(this);                                    // device context for painting

    CRect cRect;
    GetClientRect(cRect);

    // Create a memory DC and a "bitmap" for it to draw on
    CDC MemoryDc;       
    MemoryDc.CreateCompatibleDC(&dc);
   
    CBitmap Bitmap;
    Bitmap.CreateCompatibleBitmap(&dc, cRect.Width() - 1, cRect.Height() - 1);


    MemoryDc.SelectObject(&Bitmap);

    // Draw whatever on this memory dc

    PaintTermometer(&MemoryDc);
    PaintLines(&MemoryDc);
    PaintTemp(&MemoryDc);

    // BitBlt it onto the real DC, ie. the screen
   
dc.BitBlt(0, 0, cRect.Width(), cRect.Height(), &MemoryDc, 0, 0, SRCCOPY);                                                   

    // Do not call CStatic::OnPaint() for painting messages
}

Det virker også helt efter hensigten, mit spørgsmål er:

Hvis jeg laver:

Bitmap.CreateCompatibleBitmap(&dc, cRect.Width() - 1, cRect.Height() - 1);

uden de 2 ( - 1) så kommer der en sort kan i bunden og i venstre side, dette sker ikke hvis jeg trækker en fra i størrelsen, HVORFOR????? jeg starter med at male hele baggrunden grå med:

    CRect cRect;
    GetClientRect(&cRect);

    pDC->SelectObject(&cPenNull2);
    pDC->SelectObject(&cBrushGrey);
    pDC->Rectangle(cRect);

håber på svar.

mvh

XenoCypraZ
Avatar billede segmose Nybegynder
06. september 2004 - 10:47 #1
Fordi du går går fra (0,0)-(width-1, heigth-1) og ikke fra (1,1)-(width, heigth) som normal folk (ikke programmøre) ville tænke det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester