Hirdetés

Új hozzászólás Aktív témák

  • thon73
    tag

    Bocsánat, még egy kérdés az optimalizálásról.
    Van egy - mondjuk 1200x800 pixeles képem, amit az onDraw helyez bele a Viewbe így:
    canvas.drawBitmap(skin, null, dst, null);
    (Rect dst értékét az onSizeChanged-ben szedem össze, gyakorlatilag a View mérete, a bitmap dekódolása, közelítő átméretezése meg a konstruktorokban van.)

    Kérdés:
    Mivel rajzolok a bitmap felszínén (egy pont követi az ujjamat), ez a drawBitmap() minden alkalommal lefut. És minden alkalommal ismételten átméretezi a bitmap-et. (Hol 798, hol 356 stb a View mérete, pl. ahogy forgatom a készüléket.)

    Ezt kell-e v. lehet-e optimalizálni? Az inSampleSize segítségével már megközelítőleg ekkora képet csináltam, de nem pontosan ekkorát. Vagy ez nem akkora terhelés? Végül is elég gyorsan fut...

    Azt hiszem megoldottam, bár lehet, h. nem ez a legoptimálisabb. A grafikában nem vagyok otthon. (A nem ide tartozó részek hiányoznak a kódból.)

    private Bitmap skin;
    private Bitmap skinscaled;

    private void init()
    {
    skin = BitmapFactory.decodeResource(getResources(),
    R.drawable.portrait);
    }

    protected void onSizeChanged (int w, int h, int oldw, int oldh)
    {
    skinscaled = Bitmap.createScaledBitmap( skin, w, h, false);
    }

    protected void onDraw(Canvas canvas)
    {
    canvas.drawBitmap( skinscaled, 0f, 0f, null);
    }

    Egy további kérdés még felmerült bennem: az onDraw-ban megkapott canvas-szal csak az onDraw-ban rajzolhatok (invalidate után mindent újra), vagy máshol is rajzolhatok rá, olyat, amit nem kell letörölni a következő rajz előtt? (Az ujj húzásának az útját mutatja; felemelésig)

Új hozzászólás Aktív témák