[英]Flip a bitmap horizontally and draw to specific part of canvas
如何在完全相同的位置上将此位图绘制到画布上,但水平翻转? 矩阵文档并不十分详细。 这是初始图:
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);
我最终这样做:
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);
请注意,当我使用Xamarin.Android时,方法名称略有不同(.getBitmap()变为.Bitmap)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.