[python-win32] RE: drawing a bitmap

Jack Andrews effbiae at ivorykite.com
Fri Apr 22 08:49:24 CEST 2005


thanks mark.

i've got to the bottom of the problem -- there seems to be a problem with
constructing/updating PyBitmaps.

or, more generally, the fuzzy boundary between win32gui and win32ui.  what
do you think about python-wrapping the win32 api, and building the
MFC-like class system in python?  a few win32gui functions are missing,
which means i have to use win32ui.  but i guess there's venster for
that... but it appears pretty inactive.


this code works:

       hwnd=CreateWindow(...)
       wnd=CreateWindowFromHandle(hwnd)

       dc=GetDC(hwnd)
       bm=CreateBitmapFromHandle(CreateCompatibleBitmap(dc,w,h))
       print bm.GetSize()

--> (944,734)

while this (supposedly evuivalent) code:

       wdc=wnd.GetDC()
       bm=CreateBitmap()
       bm.CreateCompatibleBitmap(wdc,w,h)
       print  bm.GetSize()

--> (0,0)




Mark Hammond said:
>> hi,  i can't seem to create a bitmap in memory using pywin32.
>>  my assert
>> fails, telling me that the bitmap size is (0,0)?
>
> I'm no expert on GDI programming at all.  However, I have code that
works
> that looks like:
>
>     hdcBitmap = win32gui.CreateCompatibleDC(0)
>     hdcScreen = win32gui.GetDC(0)
>     hbm = win32gui.CreateCompatibleBitmap(hdcScreen, size_x, size_y)
hbmOld = win32gui.SelectObject(hdcBitmap, hbm)
>     # draw on hbm
>     win32gui.SelectObject(hdcBitmap, hbmOld)
>     win32gui.DeleteDC(hdcBitmap)
>     win32gui.DeleteDC(hdcScreen)
>     # hbm can now be used.
>
> That appears subtly different.  The code is from
> win32\Demos\win32gui_menu.py - it draws some bitmaps on menus.
>
> Mark
>





More information about the Python-win32 mailing list