copy a wxDC to wxScrolledWindow

Piotr Starczewski pstarczewski at o2.pl
Mon Dec 4 07:02:22 PST 2006


Here is a sample of what I think should help you.
I have tested it with wx2.8.0 on WinXP sp2

Regards,
Peter

Piotr Starczewski wrote:
> Your code looks ok (didn't test it yet). The only thing is that you =

> should put memDC->SelectObject(wxNullBitmap) instead of =

> memDC->DrawBitmap. By drawing your bitmap on memDC theoretically you =

> are drawing currently selected bitmap on the same bitmap (I'm not sure =

> if that is possible with currently drawn bitmap selected into =

> wxMemoryDC and I'm not sure how it will behave). I'll test this =

> solution later this evening.
>
> You mentioned that "I have a wxDC drawn before, outside my =

> application.". What do you mean by that? Are you trying to take a =

> window snapshot from external application or does some external =

> application "draws" on your dc?
>
> Regards,
> Peter
>
> Miguel Cartagena wrote:
>> I test this and when I call Blit method, it's draw a print screen .. my
>> IDE.
>> Here the code:
>>
>>   dc.GetSize(&w, &h);
>>           // the source DC
>>   wxBitmap bmp(w, h, wxBITMAP_TYPE_BMP);
>>   wxMemoryDC *memDC =3D new wxMemoryDC();
>>   memDC->SelectObject(bmp);
>>   bmp.SaveFile(_T("c:\\test1.bmp"), wxBITMAP_TYPE_BMP);    // just for
>> test
>>   wxCoord zero =3D 0;
>>   wxCoord ww =3D w;
>>   wxCoord hh =3D h;
>>
>>   memDC->Blit(zero, zero, ww, hh, &dc, zero, zero);
>>   bmp.SaveFile(_T("c:\\test2.bmp"), wxBITMAP_TYPE_BMP);   // just for
>> test
>>
>>   memDC->DrawBitmap(bmp, 0, 0, false);
>>
>>   wxImage img =3D bmp.ConvertToImage();
>>   img.Rescale(210, 297);
>>   wxBitmap bmpRescaled(img);
>>
>>   bmpRescaled.SaveFile(_T("c:\\test3.bmp"), wxBITMAP_TYPE_BMP);   //
>> just for test
>>
>>
>>
>>
>> On Dec 4, 9:56 am, pstarczew... at o2.pl (Piotr Starczewski) wrote:
>>  =

>>> That should not be a problem. First of all you need to get a
>>> pointer/reference to your source wxDC. Then just wxDC::Blit it into
>>> wxMemoryDC with selected bitmap. Final step is to rescale your bitmap
>>> and draw it with wxDC::DrawBitmap(...) onto your scrolled window.
>>>
>>> Regards,
>>> Peter
>>>
>>>
>>>
>>> Miguel Cartagena wrote:
>>>    =

>>>> Sorry, I'll try to explain the problem better.
>>>>       I have a wxDC drawn before, outside my application. So, I =

>>>> don't know
>>>> what is drawn in it and I can't "do my drawing"  :)
>>>> What I want to do is: get this DC, rescale to my ScrolledWindow size
>>>> and show it into my ScrolledWindow.
>>>>       For this, copy the DC it's not enough, I think. A possible =

>>>> solution is
>>>> redraw the DC that I receive on MyScrolledWindow::OnDraw(wxDC& dc)
>>>> method, or something like.
>>>>       void DCReceiver::ReceiveDC(wxDC& dc){
>>>>   MyScrolledWindow::Draw(dc);
>>>> }
>>>>       ...
>>>>       void MyScrolledWindow::Draw(wxDC& dc){
>>>>   dc.Redraw();  // the wxDC::Redraw() method not exists, therefore my
>>>> doubt.
>>>> }
>>>>       void MyScrolledWindow::OnDraw(wxDC& dc){
>>>>   Draw(dc);  // rewrite the wxScrolledWindow::OnDraw method ?
>>>> }
>>>>       Thanks and regards,
>>>> Miguel
>>>>       =

>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: wx-users-unsubscr... at lists.wxwidgets.org
>>>> For additional commands, e-mail: =

>>>> wx-users-h... at lists.wxwidgets.org-------------------------------------=
-------------------------------- =

>>>>
>>>>       =

>>> To unsubscribe, e-mail: wx-users-unsubscr... at lists.wxwidgets.org
>>> For additional commands, e-mail: wx-users-h... at lists.wxwidgets.org
>>>     =

>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: wx-users-unsubscribe at lists.wxwidgets.org
>> For additional commands, e-mail: wx-users-help at lists.wxwidgets.org
>>
>>
>>
>>   =

>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wx-users-unsubscribe at lists.wxwidgets.org
> For additional commands, e-mail: wx-users-help at lists.wxwidgets.org
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dc_to_scrolledwindow.7z
Type: application/octet-stream
Size: 2441 bytes
Desc: not available
Url : http://lists.wxwidgets.org/pipermail/wx-users/attachments/20061204/fa=
67769c/dc_to_scrolledwindow.obj


More information about the wx-users mailing list