如何在完全相同的位置将此位图绘制到画布,但水平翻转?矩阵文档并不完全冗长。这是最初的图纸:
canvas.DrawBitmap (_ballBmpRight, ParentView._ballX, ParentView._ballY, null);
我尝试翻转位图:
flipHorizontalMatrix = new Matrix();
flipHorizontalMatrix.SetScale(-1,1);
flipHorizontalMatrix.PostTranslate(_ballBmpRight.Width, 0);
然后绘制它(这是我无法将它放在画布的正确部分的地方):
canvas.DrawBitmap (_ballBmpRight, flipHorizontalMatrix, null);
答案 0 :(得分:0)
我最终这样做了:
BitmapDrawable flip(BitmapDrawable d)
{
Matrix m = new Matrix();
m.PreScale(-1, 1);
Bitmap src = d.Bitmap;
Bitmap dst = Bitmap.CreateBitmap(src, 0, 0, src.Width, src.Height, m, false);
//dst.SetDensity(DisplayMetrics.DENSITY_DEFAULT);
return new BitmapDrawable(dst);
}
翻转的客户端代码:
var bd = new BitmapDrawable (_ballBmpRight);
BitmapDrawable bdFlipped = flip (bd);
_ballBmpLeft = bdFlipped.Bitmap;
画布绘图代码:
canvas.DrawBitmap (_ballBmpLeft, ParentView._ballX, ParentView._ballY, null);
请注意,方法名称略有不同(.getBitmap()只是.Bitmap),因为我正在使用Xamarin.Android。