У меня есть класс, который рисует форму из png-изображения, так что я могу использовать форму для рисования границы пользовательских кнопок, которые мне нужны для моего проекта. вот код для класса, чтобы нарисовать форму изображения:Java - Создайте форму из рамки вокруг изображения
public class CreateShapeClass {
public static Area createArea(BufferedImage image, int maxTransparency) {
Area area = new Area();
Rectangle rectangle = new Rectangle();
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
int rgb = image.getRGB(x, y);
rgb = rgb >>> 24;
if (rgb >= maxTransparency) {
rectangle.setBounds(x, y, 1, 1);
area.add(new Area(rectangle));
}
}
}
return area;
}
}
однако, это занимает очень много времени, чтобы обработать, и я подумал, что предварительно рисованием фигур в моем главном приложении, а затем хранить их в массив и переход к другим классам, это уменьшит время рендеринга. однако время, затрачиваемое на метод paintBorder() для вычеркивания границы кнопки, занимает довольно много времени (хотя и короче времени, необходимого для рисования фигуры), потому что форма, сгенерированная классом выше, заполняется, а не пустой. Я пытался рисовать фигуры с помощью java2d, например, Ellipse2D, а рендеринг кнопки занимает очень короткое время. любой, кто в этой области может научить меня, как мне создать форму, которая является границей BufferedImage? Я использую класс выше, чтобы создать форму из изображения PNG с прозрачным фоном.
извините, вы можете помочь мне увидеть, какие части используются для получения контура? я не очень хорошо знаком с такими формами и/или:/назовите меня. – csharpnewbie
ах, хорошо, я получил это спасибо! во всяком случае, этот метод действительно очень быстрый по сравнению с классом i, который использовался выше. результат получается менее чем за секунду! в отличие от вышеуказанного метода, который занимает около -13 секунд для обработки. еще раз спасибо! – csharpnewbie
Рад, что вы его отсортировали. :) Я ввел комментарии в качестве ответа, пожалуйста [примите] (http://meta.stackexchange.com/a/65088/155831), когда вы получаете шанс. –