[wxWidgets]_[中级]_[合并图片-平铺图片-使用小图绘制大图]


场景:

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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter(阿斯拉达)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值