Próbuję napisać układankę za pomocą JavaFX częściowo, ponieważ ktoś mnie zapytał, a częściowo dlatego, że chcę dać JavaFX iść. Mam jednak problem z rzeczywistym kadrowaniem obrazu.Efektywne przycinanie obrazu w JavaFX
Założeniem jest, aby użytkownik dostarczył obraz i program do cięcia obrazu na mniejsze kawałki. Proste, prawda? Mój problem jest taki: Jedynym sposobem udało mi się znaleźć, aby wyciąć obraz jest zrobić kopię obiektu i zmianę widoczną część kopii, oto przykład:
ImageView imgageView = new ImageView(); // Creates a new ImageView; this will be a single puzzle piece.
imgageView.setImage(originalImage); // Use the original image as the "base."
Rectangle2D rectangle = new Rectangle2D(0, 0, 50, 50); // Crop the image from (0,0) to (50, 50).
Wystarczy, aby wyjaśnić ostatnią linię , oto related piece in the API:
public Rectangle2D(double minX,
double minY,
double width,
double height)
Creates a new instance of Rectangle2D.
Parameters:
minX - The x coordinate of the upper-left corner of the Rectangle2D
minY - The y coordinate of the upper-left corner of the Rectangle2D
width - The width of the Rectangle2D
height - The height of the Rectangle2D
teraz to jest w porządku, jeśli mam cięcia obrazu na cztery lub dziewięć sztuk (gra jest przeznaczona dla małych dzieci), ale co zrobić, jeśli chcę, aby wyciąć zdjęcie w miłym 1200 elementów układanki? Czy nie spowoduje to wyjątkowo kosztownej operacji? Nie tylko samo przycinanie, ale także zachowanie w pamięci wielu kopii obrazu. Widzisz, jeśli dobrze rozumiem to, każdy fragment będzie składał się z całego oryginalnego obrazu z dużą jego częścią, która pozostanie "ukryta".
Czy po prostu nie rozumiem tej funkcji? Jeśli nie, to musi być lepszy sposób, prawda?
Dzięki za odpowiedź, właściwie zapomniałem o tym pytaniu. – NotMyName