从seekbar Android绘制textview不透明度和大小

时间:2016-04-24 15:55:52

标签: android canvas seekbar watermark

我正在开发一个简单的水印应用,用户可以上传图片,并且可以使用Seekbar编辑水印文本视图的不透明度和文本大小。完成编辑后,用户将按保存按钮保存编辑后的文本视图。最终结果应该是包含用户编辑的水印textview的新图像。我使用Canvas方法在上传的图像上绘制水印textview。但是,我在搜索栏中遇到数据集的问题并没有通过画布,我的最终结果是没有水印textview创建的新图像。请给我指导。谢谢。 这是用户编辑文本大小和不透明度的搜索栏代码: -

        SeekBar trans=(SeekBar)findViewById(R.id.main_sb_transparent);
        SeekBar size=(SeekBar)findViewById(R.id.main_sb_size);
        TextView water_text=(TextView)findViewById(R.id.watertext);
        float Alpha; // store the text opacity value
        int Size; // store the text size value

        trans.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
        {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                          Alpha=(float)(trans.getProgress())/(float)(seekBar.getMax());
                          water_text.setAlpha(Alpha);
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }

            });

       size.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
        {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {

                    Size=size.getProgress();
                    water_text.setTextSize(Size);
                }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {


            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }

        });

    }

这是将水印文字绘制到上传图片的功能: -

private Bitmap drawText(Bitmap source)
{
    int width=source.getWidth();
    int height=source.getHeight();
    Bitmap result=Bitmap.createBitmap(width, height, source.getConfig());

    Canvas canvas=new Canvas(result);
    canvas.drawBitmap(source,0,0,null);

    Paint paint = new Paint();
    paint.setColor(colors);
    paint.setTypeface(font);
    paint.setAlpha((int) (Alpha)); // <== Alpha value obtained from seekbar
    paint.setTextSize(Size);    <== Size value obtained from seekbar
    paint.setTextAlign(Paint.Align.CENTER);

    int xPos=(canvas.getWidth()/2);
    int yPos=(int)((canvas.getHeight()/2)-((paint.descent()+paint.ascent())/2));

    canvas.drawText(edited, xPos, yPos, paint);

    return result;
}

0 个答案:

没有答案