[cairo] Problems with InvalidateRect under Windows

Adrian Lopez adrianlopezroche at gmail.com
Mon Jun 7 13:11:24 PDT 2010


Hi. I'm using Cairo 1.8.10 (precompiled from the GTK+ for Windows page). I
don't know what version of pixman, if any, it's compiled against.

My drawing code looks like this:

case WM_PAINT:
    {
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hwnd, &ps);
    HDC memDC = CreateCompatibleDC(hdc);

    RECT rect;
    GetClientRect(hwnd, &rect);
    HBITMAP newbitmap = CreateCompatibleBitmap(hdc, rect.right - rect.left,
rect.bottom - rect.top);
    HGDIOBJ oldbitmap = SelectObject(memDC, newbitmap);

    cairo_surface_t *surface = cairo_win32_surface_create(memDC);

    cairo_t *cr = cairo_create(surface);

    /* >>> drawing commands go here <<< */

    BitBlt(hdc, 0, 0, rect.right - rect.left, rect.bottom - rect.top, memDC,
0, 0, SRCCOPY);

    cairo_destroy(cr);

    cairo_surface_destroy(surface);

    SelectObject(memDC, oldbitmap);
    DeleteObject(newbitmap);

    DeleteDC(memDC);
    EndPaint(hwnd, &ps);
    }

On Mon, Jun 7, 2010 at 4:40 AM, Tim Teulings <tim at framstag.com> wrote:

> Hello!
>
> Thanks for your response!
>
>
> > I'm using Cairo under Windows with the same approach and have not
> > experienced any problems with InvalidateRect. InvalidateRect expects
> > coordinates in what Cairo calls device space, so make sure the rectangle
> you
> > pass to InvalidateRect is defined in device space rather than user space.
> > Call cairo_user_to_device to convert from user space to device space.
>
> I already tested converting the coordinates 10, 10 using cairo
> user_to_device and device_to_user conversion methods and in both cases got
> 10,10 back, which leads me to the assumption that user and device
> coordinates are the same in my case (identity matrix). Note also that the
> same code work perfectly if I use Windows native drawing functionality and
> using cairo under X11, so it is likely a problem in the interoperation
> between Windows and cairo.
>
> Could you send me (or point me at) the code for your windows and HDC
> initialization. Possibly there is a difference between your and my code that
> triggers my problem. Can you also state which versions of cairo and pixmap
> you use?
>
> --
>
> Gruß...
> Tim
>
>
> --
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20100607/64e61ac5/attachment.htm>


More information about the cairo mailing list