Я сделал прямоугольник в Xamarin. Android с помощью Camera View. Но есть много проблем, таких как -
- Не очень отзывчивый
- Отставание при перетаскивании углов
Мои попытки пока что в CameraLayout. xml
<ImageView
android:id="@+id/Center_Point_photo"
android:layout_width="80px"
android:layout_height="80px"
android:src="@drawable/center_point"
android:layout_marginTop="670px"
android:layout_marginLeft="350px" />
<ImageView
android:id="@+id/Top_Left_photo"
android:layout_width="50px"
android:layout_height="50px"
android:src="@drawable/top_left"
android:layout_marginTop="600px"
android:layout_marginLeft="250px" />
<ImageView
android:id="@+id/Top_Right_photo"
android:layout_width="50px"
android:layout_height="50px"
android:src="@drawable/top_right"
android:layout_marginTop="600px"
android:layout_marginLeft="500px" />
<ImageView
android:id="@+id/Bottom_Left_photo"
android:layout_width="50px"
android:layout_height="50px"
android:src="@drawable/bottom_left"
android:layout_marginTop="750px"
android:layout_marginLeft="250px" />
<ImageView
android:id="@+id/Bottom_Right_photo"
android:layout_width="50px"
android:layout_height="50px"
android:src="@drawable/bottom_right"
android:layout_marginTop="750px"
android:layout_marginLeft="500px" />
Вторая проблема при перетаскивании углов. Мой код для перетаскивания углов не сглаживается:
ImageView OCR_Rectangle;
ImageView OCR_Top_Left;
ImageView OCR_Top_Right;
ImageView OCR_Bottom_Left;
ImageView OCR_Bottom_Right;
int deltaX = (int)e.GetX() - lastX;
int deltaY = (int)e.GetY() - lastY;
centerX = (int)OCR_Rectangle.GetX() + OCR_Rectangle.Width / 2;
centerY = (int)OCR_Rectangle.GetY() + OCR_Rectangle.Height / 2;
if (((int)e.GetX() >= centerX) && ((int)e.GetY() >= centerY))
{
OCR_Rectangle.SetX(OCR_Rectangle.GetX() - deltaX );
OCR_Rectangle.SetY(OCR_Rectangle.GetY() - deltaY * 2);
OCR_Rectangle.LayoutParameters.Width += deltaX * 2;
OCR_Rectangle.LayoutParameters.Height += deltaY * 4;
OCR_Top_Left.SetX(OCR_Rectangle.GetX());
OCR_Top_Left.SetY(OCR_Rectangle.GetY());
OCR_Top_Right.SetX(OCR_Rectangle.GetX() + OCR_Rectangle.Width - OCR_Top_Right.Width);
OCR_Top_Right.SetY(OCR_Rectangle.GetY());
OCR_Bottom_Left.SetX(OCR_Rectangle.GetX());
OCR_Bottom_Left.SetY(OCR_Rectangle.GetY() + OCR_Rectangle.Height - OCR_Bottom_Left.Height);
OCR_Bottom_Right.SetX(OCR_Rectangle.GetX() + OCR_Rectangle.Width - OCR_Bottom_Right.Width);
OCR_Bottom_Right.SetY(OCR_Rectangle.GetY() + OCR_Rectangle.Height - OCR_Bottom_Right.Height);
}
OCR_Rectangle.RequestLayout();
lastX = (int)e.GetX();
lastY = (int)e.GetY();
Меня вдохновляет приложение Microsoft Math ссылка здесь Так что я хочу сделать что-то подобное
Любая помощь будет оценена.
Первая попытка