gpt4 book ai didi

android - Canvas 局部放大

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:00 25 4
gpt4 key购买 nike

我想部分放大 Canvas 板,因为字母托盘按钮将被固定并且板将被缩放,
部分编码如下所述,屏幕完全绘制在 Canvas 中,可以在底部看到。请帮助并感谢您的关注。

        public class BoardView extends SurfaceView implements SurfaceHolder.Callback
{
class DrawingThread extends Thread implements OnTouchListener {

public DrawingThread(SurfaceHolder holder, Handler handler) {
mSurfaceHolder = holder;

public void setRunning(boolean b) {
mRun = b;
}

@Override
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);

synchronized (mSurfaceHolder) {
// System.gc();
// c.scale(canvasScaleX, canvasScaleY);
// c.save();
// c.translate(canvasTranslateX, canvasTranslateY);
doDraw(c);
}

updateGame();
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}

private void doDraw(Canvas canvas) {
if (ge == null)
return;

Rect bRect = new Rect(0, 0, dims.getTotalWidth(),
dims.getScoreHeight() + dims.getBoardheight());
Drawable drawable = getResources().getDrawable(R.drawable.board);
drawable.setBounds(bRect);

drawable.draw(canvas);

Rect tRect = new Rect(0, dims.getScoreHeight()
+ dims.getBoardheight(), dims.getTotalWidth(),
dims.getTotalHeight());
canvas.drawRect(tRect, fillTrayPaint);

int topHeight = dims.getScoreHeight() + dims.getBoardheight();
int bottom = (dims.getTotalHeight() + 5)
- (dims.getTotalWidth() / Tray.TRAY_SIZE);
Rect rect = new Rect(0, topHeight, dims.getTotalWidth(), bottom - 7);
Drawable drawableTray = getResources()
.getDrawable(R.drawable.strip);
drawableTray.setBounds(rect);
drawableTray.draw(canvas);
drawTray(canvas);
drawBoard(canvas);

// drawScore(canvas);
drawMovingTile(canvas);
}


public BoardView(Context context, AttributeSet attrs) {
super(context, attrs);

SurfaceHolder holder = getHolder();
holder.addCallback(this);

// endTurn=(ImageButton)findViewById(R.id.endturn_button_horizontal);
thread = new DrawingThread(holder, handler);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
final float scale1 = getResources().getDisplayMetrics().density;
defaultFontSize = (int) (MIN_FONT_DIPS * scale1 + 0.5f);
thread.setDefaultFontSize(defaultFontSize);
dimensions = calculateDimensions(getWidth(), getHeight());
thread.setDimensions(dimensions);

thread.setRunning(true);

// if (thread != null && !thread.isAlive())
thread.start();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
thread.setRunning(false);
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {

}
}
}

The screen is fully draw in canvas which is mention as below :-

最佳答案

我们可以简单地通过 canvas.clipRect(rectangle) 来完成,此时我们要做的是保存 Canvas canvas.save() 并在 canvas.clipRect(rectangle) 调用 canvas.restore() 之后。

关于android - Canvas 局部放大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com