如果我有一张1px厚的图像我将如何重复它以使它变大,或者我将如何拉伸它。
因为您可以看到我的代码不是最好的循环DrawImage
colorMatrixEffect->SetInput(0, texture); //texture = ID2D1Bitmap*
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(color->r, 0, 0, 0, 0, color->g, 0, 0, 0, 0, color->b, 0, 0, 0, 0, 1, 0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);
if (rect.right == 0)
{
device_context_d2d1->DrawImage(colorMatrixEffect.get(),
D2D1::Point2F(newRect.left + offsetX, newRect.top + offsetY));
}
else
{
for (int i = 0; i < static_cast<int>(newRect.right); i++)
{
device_context_d2d1->DrawImage(colorMatrixEffect.get(),
D2D1::Point2F(newRect.left + offsetX + i, newRect.top + offsetY));
}
}
答案 0 :(得分:0)
要拉伸图像,您可以使用缩放转换。
您还可以将图像渲染为D2D1Bitmap
并将其绘制为位图,其中包含更多参数的DrawBitmap
方法,允许您将位图的任何部分绘制到目标设备的任何部分拉伸。
要绘制重复的图案,您可以使用CreateBitmapBrush
/ CreateImageBrush
方法创建位图或图像画笔,并将extendMode*
属性设置为D2D1_EXTEND_MODE_WRAP
值,然后使用此方法填充所需的形状刷。