Mình đang làm 1 chương trình vẽ đơn giản. Hiện giờ mình đã vẽ đươc ra màn hình rồi (hình chữ nhật, tròn và tam giác vuông). Bây giờ mình cần làm chức năng Select và Move. Mình đang gặp vấn đề với Select. Nếu là hình chữ nhật thì nó dễ. Lưu lại điểm nhấp chuột rồi so sánh nó có nằm trong hình chữ nhật không. Nhưng nếu là hình tam giác vuông và hình tròn thì làm như thế nào? Mình phải viết code cho từng trường hợp sao? Có cách nào để nó xét tất cả các trường hợp thay vì dùng if-else như sau:
if (shape == rectangle){
//do something
}
else if (shape == circle){
//do something
else{
//do something
}
Đây là code của hình chữ nhật. Hình tròn và tam giác cũng như vậy, có thay đổi chút ít.
public class Rectangle_ implements IShape {
private int x, y, width, height;
private Color primaryColor, secondaryColor;
private Graphics2D graphic;
private ApplicationState appState;
private ColorMap colorMap;
private Point start, end;
public Rectangle_(Point start, Point end, ApplicationState appState, Graphics2D graphic) {
this.x = Math.min (start.x, end.x);
this.y = Math.min (start.y, end.y);
this.width = Math.abs(start.x - end.x);
this.height = Math.abs(start.y - end.y);
this.graphic = graphic;
this.appState = appState;
this.start = start;
this.end = end;
}
@Override
public void draw() {
this.graphic.setStroke(new BasicStroke(3));
switch (this.appState.getActiveShapeShadingType()) {
case OUTLINE:
this.drawOutline();
break;
case FILLED_IN:
this.drawFill();
break;
case OUTLINE_AND_FILLED_IN :
this.drawOut_Fill();
break ;
}
}
}
Các bạn có thể gợi ý cho mình không?