我正在尝试使用以下代码在3个区域中分隔图形网格的背景:
int[] data = {0xff000000, 0x80008000, 0xff000000};
bgBitmap = Bitmap.createBitmap(data, 1, 3, Bitmap.Config.ARGB_8888);
RectF rect = plot.getGraphWidget().getGridRect();
BitmapShader myShader = new BitmapShader(
Bitmap.createScaledBitmap(bgBitmap, 1, (int) rect.height(), false),
Shader.TileMode.REPEAT,
Shader.TileMode.REPEAT);
plot.getGraphWidget().getGridBackgroundPaint().setShader(myShader);
因此将3像素位图缩放到图形高度并在整个域区域重复它。 然而,结果图表显示背景似乎向上移动了一点。 看起来移位大小大约等于域标签高度。
我该如何解决这个问题?
由于'声誉'的叹息,嗯不能发布图片。 链接到示例图表:http://marcel.mesa.nl/androidplot.png答案 0 :(得分:0)
我认为您正在遇到this thread末尾附近提到的问题。实质上,着色器的原点是屏幕的左上角,而不是使用着色器绘制背景的组件的左上角。解决方案是转换为graphWidget的左上角,如下所示:
RectF rect = plot.getGraphWidget().getGridRect();
Matrix m = new Matrix();
m.setTranslate(rect.left, rect.top);
shader.setLocalMatrix(m); // where shader is your shader instance