MWB*_*MWB 3 java android canvas paint
好的,我不知道如何描述这个.我创建了一个名为ScreenAreas的类,它定义了屏幕上的特定区域.后来,我正在绘制这些ScreenAreas.
我想做的是将Paint属性(Color,strokeWidth,Shaddowsettings等)耦合到这些ScreenAreas,这样我再也不需要重新绘制所有这些属性.
这是我的ScreenArea类:import android.graphics.Canvas; import android.graphics.Paint;
public class ScreenArea {
private int xMin;
private int yMin;
private int xMax;
private int yMax;
private Paint paint;
public ScreenArea(int x1, int x2, int y1, int y2, Paint paint) {
this.setXMin(x1);
this.setXMax(x2);
this.setYMin(y1);
this.setYMax(y2);
this.paint = paint;
}
// I removed the getters and setters for clarity
public void draw(Canvas canvas){
canvas.drawRect(this.xMin, this.yMin, this.xMax, this.yMax, this.paint);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的主要课程中,我使用以下方法构建它们:
paint.setColor(Color.rgb(10,10,10));
area1 = new ScreenArea (
0,
0,
100,
100,
paint);
paint.setColor(Color.rgb(100,100,100));
area2 = new ScreenArea(
20,
20,
80,
80,
paint);
Run Code Online (Sandbox Code Playgroud)
当我试图绘制它们时,我只是这样做:
area1.draw(canvas);
area2.draw(canvas);
Run Code Online (Sandbox Code Playgroud)
但是,这两个区域的颜色都是相同的.事实上,它们被赋予最后使用的颜色.可能这是因为ScreenArea中的Paint对象只是指向主类中的同一个Paint对象.问题是,如何解决这个问题!
任何人?
this.paint = paint;
Run Code Online (Sandbox Code Playgroud)
在你的ScreenArea
构造函数中,你可以使用:
this.paint = new Paint(paint);
Run Code Online (Sandbox Code Playgroud)