场景:
1.有时候绘制控件的背景时,控件的大小是不定的,即可以最大化最小化,这样使用固定大小的图片就不合适了。
2.解决办法之一就是使用平铺小图片的方式合并成大的背景图.
方法1:使用图形的Brush..
static void DrawWordBitmap(wxBitmap* dest, wxBitmap* source)
{
wxMemoryDC dc;
dc.SelectObject(*dest);
dc.SetPen(*(wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(*source));
dc.DrawRectangle(0, 0, dest->GetWidth(),dest->GetHeight());
dc.SelectObject(wxNullBitmap);
}
方法2:使用Blit
int s_width = source->GetWidth();
int d_height = dest->GetHeight();
int d_width = dest->GetWidth();
wxMemoryDC sdc;
wxMemoryDC ddc;
sdc.SelectObject(*source);
ddc.SelectObject(*dest);
if (s_width >= d_width)
{
ddc.Blit(0, 0, d_width, d_height, &sdc, 0, 0, wxCOPY, true);
}
else
{
for (int i = 0; i < d_width;)
{
s_width = ((d_width - i) > s_width) ? s_width : (d_width - i);
ddc.Blit(i, 0, s_width, d_height, &sdc, 0, 0, wxCOPY, true);
i += s_width;
}
}
sdc.SelectObject(wxNullBitmap);
ddc.SelectObject(wxNullBitmap);