Я пытаюсь получить растровое изображение для разбивки на что-то вроде этого:
---- ---- ----
| || || |
---- ---- ----
, делая в качестве примера следующее:
CD2DBitmapBrush* m_pBitBrush;
m_pBitBrush = new CD2DBitmapBrush(GetRenderTarget(), _T("grass.bmp"));
POINT pt;
pt.x = 0;
pt.y = 0;
CRect rect = new CRect(pt, m_pBitBrush->GetBitmap()->GetSize());
pRenderTarget->FillRectangle(rect, m_pBitBrush);
for(int i = 0; i < 5; i++)
{
pt.x += 40;
rect = new CRect(pt, m_pBitBrush->GetBitmap()->GetSize());
pRenderTarget->FillRectangle(rect, m_pBitBrush);
}
Когда я это делаю, растровое изображение отображаетсяправильно один раз, но каждый экземпляр после этого «растягивается» (то есть повторяется последний столбец пикселей, но не остальная часть изображения).
Если я изменяю x, самый правый столбец повторяется.Если я изменяю y, нижний ряд повторяется.И если я изменю и x, и y (по диагонали), угловой пиксель заполняет прямоугольник.
x:
---- -----------
| |||||||||||||
---- -----------
y: x and y:
---- *----*
| | | |
---- *----*
---- ******
---- ******
---- ******
Кроме того, я попытался изменить изображение, которое использует кисть после того, как оно вызывается в первый раз, ипосле оригинала ничего не отображается.
CRect rect = new CRect(pt, m_pBitBrush->GetBitmap()->GetSize());
pRenderTarget->FillRectangle(rect, m_pBitBrush);
CD2DBitmap* bit = new CD2DBitmap(GetRenderTarget()/*pRenderTarget*/, _T("stone.bmp"));
m_pBitBrush->SetBitmap(bit);
for(int i = 0; i < 5; i++)
{
pt.x += 40;
rect = new CRect(pt, m_pBitBrush->GetBitmap()->GetSize());
pRenderTarget->FillRectangle(rect, m_pBitBrush);
}
Конечно, я делаю что-то не так, так как я новичок, но я не могу заставить это работать.Кто-нибудь может указать мне правильное направление?