Jak mogę uzyskać obraz na płótnie, aby móc go narysować?Rysowalny obraz na płótnie
Odpowiedz
spróbować
Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
Trzeba załadować obraz jako mapę bitową:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
następnie dokonać bitmapy zmienny i stworzyć płótno nad nim:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
następnie można rysować na płótnie.
Co zrobić, jeśli mój .png jest duży i zostanie odcięty po załadowaniu ? tj. nie chcę tego przyciąć. Może być większy niż ekran, wtedy postaram się, aby był powiększalny i ruchomy. Jak mogę to zrobić? Dziękuje Ci bardzo bardzo mocno! –
@ perfectionm1ng spójrz na użycie BitmapRegionDecoder. Umożliwia częściowe ładowanie dużych obrazów. Więc powinieneś być w stanie załadować tylko część obrazu, który renderujesz w danym momencie. –
Mam ten sam problem Używam kodu Canvas cs = new Canvas (bitmap); Zasoby res = getResources(); Bitmap bitmapx = BitmapFactory.decodeResource (res, R.drawable.overlay_good_full); Bitmap bitmapxx = BitmapFactory.decodeResource (res, R.drawable.overlay_bad_full); if (text.equals ("Good")) { cs.drawBitmap (bitmapx, 0, 0, tPaint); } else { cs.drawBitmap (bitmapxx, 0, 0, tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
Tworzenie nowego obiektu Paint w onDraw jest szkodliwe dla wydajności –
ok .. Odpowiedzi zaktualizowałem – user1140237
nie jestem pewien, że trzeba załadować obraz jako bitmapę jako kodzie (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29) wykorzystuje Drawable.draw(Canvas c)
.
Dobrą sposób zwrócić rozciągliwej na płótnie nie dekoduje go samodzielnie, ale pozostawiając go do systemu, aby to zrobić:
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
ta będzie współpracować ze wszystkimi rodzajami kanału alfa, nie tylko bitmapy. Oznacza to również, że można ponownie użyć tego samego rysunku, jeśli tylko zmieni się rozmiar.
Jak używać listy animacji (wiele klatek) do animacji z podejściem canvas? – RichieHH
Bardzo przydatne! Przynajmniej wtedy, gdy potrzebujesz tylko obrazu tła bez udziału nauki o rakietach! – Asim
@RichieHH Mam moje tło na SurfaceView (prawdopodobnie odpad) i ten widok powierzchni jest osadzony w Framelayout, a ten framelayout zawiera ImageViews, które następnie animuję - może to opcja dla ciebie? – AgentKnopf
również można użyć w ten sposób. zmieni swój wielki drawble dopasowanie do swoich płótnie:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
klasa BitmapFactory nie ma metody "BitmapFactory.decodeResource (Resource, Drawable);" ... – Crisic
@ Crisic Zakładam, że 'yourDrawable' jest liczbą całkowitą. –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Tworzę Drawable z gerResource(). GetDrawable (id); – Vikram
Funkcja getDrawable (id) jest przestarzała, należy użyć wywołania ContextCompat powyżej lub wywołania getDrawable (identyfikator, motyw). https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) – wblaschko
Dla mnie konieczne było użycie 'setBounds'. Bez tego nic nie zostało wyświetlone. –
- 1. Rozciągnij obraz na płótnie
- 2. Otwórz obraz lokalny na płótnie
- 3. Rysuj obiekt/obraz na płótnie
- 4. CoreGraphics narysować obraz na białym płótnie
- 5. Wyświetlanie svg na płótnie
- 6. ulotka js: rysuj punkty POI jako obraz na płótnie
- 7. Jak otworzyć obraz PIL w Tkinter na płótnie
- 8. Utwórz obraz narysowany na płótnie przeciągalny za pomocą JavaScriptu
- 9. HTML5 jak narysować przezroczysty obraz piksela na płótnie
- 10. Android tworzy warstwy na płótnie
- 11. przenoszenie obrazu na płótnie html
- 12. Przewijanie na dużym płótnie
- 13. Rysowanie tekstu na płótnie
- 14. Rysowanie na płótnie% element
- 15. Układanie bitmapy na płótnie
- 16. Niepoprawny tekst na płótnie
- 17. Html na płótnie?
- 18. Podkładka na płótnie Chart.js
- 19. Android - Zanikanie obrazu bitmapy na płótnie
- 20. Wyświetlanie obrazu tła na płótnie atramentowym UWP
- 21. Jak proporcjonalnie zmienić rozmiar obrazu na płótnie?
- 22. HTML5 generowanie obrazu tła na płótnie
- 23. Powiększanie i przesuwanie obrazu na płótnie
- 24. Efekt rozmycia tła z plamami na płótnie
- 25. Aplikacja na Androida - jak zapisać rysunek bitmapowy na płótnie jako obraz? Sprawdź kod?
- 26. Narysuj skalowaną bitmapę na płótnie?
- 27. pomiar tekstu na skalowanym płótnie
- 28. wyraźna linia na płótnie HTML5
- 29. Rysuj linię kreskową na płótnie
- 30. addEventListener dla keydown na płótnie
Ale jeśli mogę użyć canvas.drawBitmap (mBitmap, 0, 0, mBitmapPaint); działa i ładuje zapisany obraz na płótno, ale jednocześnie cofa się i przerabia przestaje działać, sprawdź mój kod http://pastebin.com/cP9w6stm – AndroidDev