German Bild an widget übergeben

Siam

Active Member
Licensed User
Longtime User
Hallo,

ich hab mal wieder ein Problem bei dem ich nicht weiterkomme.
Ich erstelle mir mit unten stehendem Beispielcode aus 2 Bildern ein Dynamisches welches eigentlich mittels rv.SetImage(imageview2,bitmap3) an das Widget übergeben werden soll. Leider Funktioniert das nicht :BangHead:

Den einzigsten weg den ich bis jetzt gefunden habe, ist das ich das neu erstellte image (bitmap3) zuerst speichere um es dann gleich wieder zu laden.
Mir erscheint dies ziemlich schwachsinnig aber ich finde irgendwie keine andere funktionierende Lösung.

Kann mir hier jemand bitte ein Tipp geben wie ich das Bild ohne zu speichern an das widget weiter geben kann?

glg

Andy

B4X:
'bildversuch start
   Dim Bitmap1, bitmap2, bitmap3 As Bitmap
   Dim canvas1 As Canvas
   Dim DestRect As Rect
   Dim imageview1, imageview2 As ImageView
   Dim SrcRect As Rect
   imageview1.Initialize("")
   Bitmap1.Initialize(File.DirAssets, "balken.png")
   Bitmap2.Initialize(File.DirAssets, "24.png")
   bitmap3.InitializeMutable(250dip,60dip)
   DestRect.Initialize(0dip, 0dip, 320dip, 60dip)
   canvas1.Initialize2(bitmap3)
   Canvas1.DrawBitmap(Bitmap1,Null , DestRect) 'draws the bitmap to the destination rectangle.


   SrcRect.Initialize(0, 0, Bitmap2.Width , Bitmap2.Height) 'the left half of the bitmap.
   offset = 280 / zykluslaenge *zyklustag -15
   DestRect.Top = 15dip 
   DestRect.Bottom = 0dip + 45dip
   destrect.Left = 10dip + offset
   destrect.Right = 40dip + offset
   Canvas1.DrawBitmap(Bitmap2, SrcRect, DestRect) 'draws half of the bitmap.
   
   Dim out As OutputStream
   out=File.OpenOutput (File.Dirrootexternal,"test.png",False)
      bitmap3.WriteToStream(out,100,"PNG")
   out.close

   'imageview2.Invalidate
   'rv.SetImage(imageview2,bitmap3)
   rv.SetImage("imageview2", LoadBitmap(File.Dirrootexternal,"test.png"))
   'bildversuch ende   
        rv.UpdateWidget
 
Last edited:

corwin42

Expert
Licensed User
Longtime User
Hmm, das ist merkwürdig. Versuch mal den Dim von bitmap3 in process_globals zu verschieben. Ich weiss nicht genau wie diese RemoteViews funktionieren und evtl. meint der Garbage Collector, dass er die Bitmap schon wieder entsorgen kann, bevor sie an das Widget weitergereicht wurde.
 

Siam

Active Member
Licensed User
Longtime User
Hallo,

keine Chance! egal wo ich die Dimensionierungen hin schiebe. Sobald ich das Bild direkt an den RemoteView übergebe gibt immer nur die Meldung "Die Anwendung wurde unerwartet beendet versuchen sie es erneut"

Am Bild selber kann es ja nicht liegen wenn ich dies zuerst Speicher und sofort wieder lade funktioniert dies ja. :sign0148:

glg

andy
 

monki

Active Member
Licensed User
Longtime User
Hallo Du musst den Imageviewnamen in "" setzen.


'rv.SetImage("imageview2",bitmap3):)

Monki
 
Last edited:
Top