Имам подклас от ImageView
, върху който мога да рисувам (перо, правоъгълник, елипса и т.н.) и да добавя EditText
подизгледи (с възможност за плъзгане и завъртане).
Проблемът е, че когато искам да получа крайно изображение, не съм сигурен как да обединя тези EditText
в ново изображение, защото всички инструменти рисуват директно върху платно, докато трябва да начертая EditText
текста в края, тъй като те трябва да могат да се плъзгат и може да се променя, преди потребителят да щракне върху Запиши.
След много различни подходи, този е най-правилен, но не работи, ако текстът е завъртян с някаква степен.
public Bitmap GetFinalBitmap()
{
this.DrawingCacheEnabled = false;
this.DrawingCacheEnabled = true;
var finalImage = Bitmap.CreateBitmap(GetDrawingCache(true));
foreach (var item in this.pathLists)
{
if (item.TextView != null)
{
item.TextView.BuildDrawingCache(true);
var txt = item.TextView.GetDrawingCache(true);
finalImage = Overlay(finalImage, txt, item.TextView.GetX(), item.TextView.GetY());
}
}
return finalImage;
}
public Bitmap Overlay(Bitmap bmp1, Bitmap bmp2, float x, float y)
{
Bitmap bmOverlay = Bitmap.CreateBitmap(bmp1.Width, bmp1.Height, bmp1.GetConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.DrawBitmap(bmp1, new Matrix(), null);
canvas.DrawBitmap(bmp2, x, y, null);
return bmOverlay;
}
Всяка помощ ще бъде оценена (актуализация на решението или може би нов подход за това как да начертаете EditText
с правилни координати върху ImageView's
растерно изображение).