3
我需要水平翻轉一個Bitmap
。我試圖將其scaleX
屬性設置爲-1.0
,並且修改了Bitmap
,使得我只能看到左側的一小部分(翻轉),而不是整個翻轉的Bitmap
。其x
財產仍然0
。我用一個變換矩陣嘗試了同樣的事情,結果相同。水平翻轉一個位圖
我在做什麼錯?
我需要水平翻轉一個Bitmap
。我試圖將其scaleX
屬性設置爲-1.0
,並且修改了Bitmap
,使得我只能看到左側的一小部分(翻轉),而不是整個翻轉的Bitmap
。其x
財產仍然0
。我用一個變換矩陣嘗試了同樣的事情,結果相同。水平翻轉一個位圖
我在做什麼錯?
我發佈了一個簡單的函數來翻轉bitmapdata對象。 http://plasticsturgeon.com/2010/09/flipping-a-bitmapdata-image/
這裏是相關的代碼。
function flipBitmapData(original:BitmapData, axis:String = "x"):BitmapData
{
var flipped:BitmapData = new BitmapData(original.width, original.height, true, 0);
var matrix:Matrix
if(axis == "x"){
matrix = new Matrix(-1, 0, 0, 1, original.width, 0);
} else {
matrix = new Matrix(1, 0, 0, -1, 0, original.height);
}
flipped.draw(original, matrix, null, null, null, true);
return flipped;
}
如果你想翻轉位圖圖像,你可以翻轉它的位圖屬性,像這樣:
myBitmap.bitmapData = flipBitmapData(myBitmap.bitmapData, "x");
您可以通過使用「Y」切換到垂直翻轉。
如果可能,我寧願將「Bitmap」而不是「BitmapData」翻轉過來。 – rid
那有什麼好處?一個翻轉的位圖將緩慢渲染,其變換數學將被顛倒,並且使用這種方法,翻蓋是完全可逆的。在你的情況下翻轉位圖有一些優點嗎? –
哦 - 另外 - 您的位圖翻轉將圖像移動到左邊的原因是,所有位圖的註冊點在左上角。如果您翻轉位圖數據,您的註冊點仍然是左上角。 –