Я создаю изображение, используя фильтр на изображении
private void createContents(final Shell shell) {
shell.setLayout(new FillLayout());
// Create the canvas for drawing
canvas = new Canvas(shell,SWT.NO_BACKGROUND);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent event) {
Image image = new Image(shell.getDisplay(), canvas.getBounds());
Image image2 = new Image(shell.getDisplay(), canvas.getBounds());
//... I add some figure to the images
ImageData data = image.getImageData();
ImageData data2 = image2.getImageData();
for(int j=0;j<rect.width;j++){
for(int i=0;i<rect.height;i++){
if(data.getPixel(j, i)<1){
data.setPixel(j, i , data2.getPixel(j, i));
}
}
}
Как я могу добавить на фигуру несколько интерактивных объектов?
2 ответа
Если вы рисуете объекты прямо на холсте, то есть не добавляете их в качестве компонентов / виджетов на холст, вам нужно будет самостоятельно определить, какие объекты были нажаты. Это так, потому что холст ничего не знает о том, что вы на нем рисуете. Вы можете добавить на холст слушателя мыши, который получает события щелчка, а затем определять, находятся ли какие-либо из этих щелчков внутри границ нарисованных вами объектов.
В качестве альтернативы вы можете создать подкласс Control с помощью класса интерактивных объектов. Затем добавьте mouseListener в свой настраиваемый элемент управления и добавьте его на холст.
Итак, лучший способ - добавить на холст слушателя управления мышью?
// Create the canvas for drawing
canvas = new Canvas(shell,SWT.NO_BACKGROUND);
canvas.addMouseListener(new MouseListener(){
@Override
public void mouseDoubleClick(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDown(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("Click");
}
@Override
public void mouseUp(MouseEvent e) {
// TODO Auto-generated method stub
}
});
И затем контролируйте, где находится щелчок, возможно, используя Rectangle.containt (int x, int y);
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.