Я работаю с приложением, в котором я добавляю тяжелый груз (Canvas) в JFrame. Canvas является сторонним компонентом, поэтому я должен держать его в тяжелом весе. Я хотел бы добавить возможности для пользователя рисовать на холсте и рисовать прямоугольник выделения.Рисунок на Java тяжеловесные колебательные компоненты
Я не думаю, что смогу сделать это со стеклянным стеклом, так как на стеклянном стекле будет показан тяжелый холст. Я попробовал добавить слушателя мыши на холст и рисовать непосредственно на его графике, но это, похоже, дает эффект «мерцания», поскольку это не легкий компонент с двойной буферизацией.
Есть ли способ достичь этого гладкого рисунка на тяжеловесных компонентах?
Это моя текущая попытка в методе окраски тяжеловесного компонента, но все еще мигает.
@Override
public void paint(Graphics g)
{
super.paint(g);
if (showUserSelection)
{
Point startDrawPoint = new Point(Math.min(startSelectPoint.x,
endSelectPoint.x), Math.min(startSelectPoint.y,
endSelectPoint.y));
Point endDrawPoint = new Point(Math.max(startSelectPoint.x,
endSelectPoint.x), Math.max(startSelectPoint.y,
endSelectPoint.y));
int w = endDrawPoint.x - startDrawPoint.x;
int h = endDrawPoint.y - startDrawPoint.y;
if (w > 0 && h > 0)
{
BufferedImage img = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
Graphics2D imgGraphics = img.createGraphics();
imgGraphics.fillRect(0, 0, w, h);
g.drawImage(img, startDrawPoint.x, startDrawPoint.y, w, h,
null);
}
}
}
спасибо. оцените помощь. Я думал, что я просто немного от него, и я думаю, что это приближает меня. –