gpt4 book ai didi

Android - 只绘制可见的部分

转载 作者:行者123 更新时间:2023-11-29 21:01:16 24 4
gpt4 key购买 nike

我创建了一个自定义 View ,它通过 onDraw() 重写方法绘制一些形状。此 View 是可滚动的,因此每次用户在 Activity 中导航时,都会调用 onDraw() 方法并绘制所有 Canvas 。在 onDraw() 方法中有一些语句进行一些困难的计算,所以我的目的是绘制,当用户 ScrollView 时,只绘制不可见的部分,而现在,对于滚动,它们是可见的。

如何才能只绘制在我的自定义 View 中可见的部分?

@Override
protected void onDraw(Canvas sysCanvas)
{
super.onDraw(sysCanvas);
if(!giaDisegnato) //If I've never drawn before, let's draw
{
if(!listaTl.isEmpty())
{
toDisk= Bitmap.createBitmap(w,h,Bitmap.Config.RGB );
canvas = new Canvas(toDisk);
canvas.drawColor(Color.WHITE);
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setAntiAlias(true);
p.setStrokeWidth(1);
for(TimelineGrafica t : listaTl)
{
if(inseritaLaPrima)
y = ySalvata + this.yAngoloDestroGiu + DISTANZA_FRA_TIMELINE;
p.setColor(t.getColor());
disegnaPunta(canvas,p,t);
disegnaRettangolo(canvas,p,t);
disegnaGrain(canvas,p,t);
disegnaFatti(canvas,p,t);
inseritaLaPrima = true;
}
y = ySalvata;
inseritaLaPrima = false;
sysCanvas.drawBitmap(toDisk,0,0,p);
}
requestLayout();
giaDisegnato = true;
}
else
{
//Here I've already drawn. So I'd like to redrawn the part of the view that now
//is visible.
sysCanvas.drawBitmap(toDisk,0,0,p);
}
}

最佳答案

由于语言的原因,很难准确地知道你在做什么。

但是,您可以使用 quickReject 检查 Canvas 以了解是否应该绘制。 .

例子:

if(canvas.quickReject(boundingRect, EdgeType.BW)) {
return;
}

关于Android - 只绘制可见的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041800/

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