Мне нужно нарисовать свои фигуры на растровом изображении вне экрана, но у меня есть странная проблема, когда я пытаюсь отобразить растровое изображение.Растровая кисть Direct2D удлиненная
Это, как должно отображаться изображение:
И это, как я видеть растровое изображение:
Ниже приведен код, который я использовать для создания растрового изображения щетка:
const auto size = renderTarget->GetSize();
const auto pxSize = D2D1::SizeU(size.width * 4, size.height * 4);
ID2D1BitmapRenderTarget* compatibleRenderTarget;
HRESULT hr = renderTarget->CreateCompatibleRenderTarget(size, pxSize, &compatibleRenderTarget);
if (SUCCEEDED(hr))
{
// compute visible area and the current transformation matrix
const auto area = get_visible_area(renderTarget);
const auto transform = D2D1::Matrix3x2F::Identity();
// offscreen bitmap rendering
compatibleRenderTarget->BeginDraw();
// draw all shapes
compatibleRenderTarget->EndDraw();
// Retrieve the bitmap from the render target.
ID2D1Bitmap* bitmap;
hr = compatibleRenderTarget->GetBitmap(&bitmap);
// release the compatible render target
compatibleRenderTarget->Release();
// Create the bitmap brush
ID2D1BitmapBrush* bitmapBrush = nullptr;
hr = renderTarget->CreateBitmapBrush(bitmap, D2D1::BitmapBrushProperties(), &bitmapBrush);
bitmap->Release();
// draw bitmap
renderTarget->FillRectangle(area, bitmapBrush);
}
Ваш вопрос о расширенной нижней строке или о потере качества растрового изображения? –
@ АнтонАнджелов Речь идет о расширенной нижней строке. На самом деле я исправил его, просто удвоил размер моей совместимой цели рендеринга, но я не могу сказать, почему ... – Nick
Почему вы не используете ID2D1RenderTarget :: DrawBitmap() и передаете offscreen растровое изображение вместо создания растровой кисти? Это намного проще. Также возникает второй вопрос: перерисовываете ли вы растровое изображение вне экрана каждый раз, когда вы оказываете рендеринг HWND? –