Hallo liebe Freunde,
Ich versuche gerade ein B4A Code in B4i zu übernehmen.
In B4A habe ich ein Panel genommen und ein Image reingeladen. danach mit Canvas über das Image gemalt.
Jetzt habe ich 2 Probleme in B4i und zwar,
In B4i kann man kein Image in ein Panel laden, nehme ich jetzt ein Imgage Wiev gibt es kein Touch mehr.
Also wer weiß welche alternativen man nehmen kann das man über ein Image zeichnen kann und es als gesamt Bild wieder speichert.
Ich versuche gerade ein B4A Code in B4i zu übernehmen.
In B4A habe ich ein Panel genommen und ein Image reingeladen. danach mit Canvas über das Image gemalt.
Jetzt habe ich 2 Probleme in B4i und zwar,
In B4i kann man kein Image in ein Panel laden, nehme ich jetzt ein Imgage Wiev gibt es kein Touch mehr.
Also wer weiß welche alternativen man nehmen kann das man über ein Image zeichnen kann und es als gesamt Bild wieder speichert.
B4X:
Sub Bild_Bearbeitung
PanelHGButton.Visible = True
Panel1Signatur.Visible = True
Dim bmp As B4XBitmap = xui.LoadBitmap(File.DirDocuments,TabStripMenue.tempImageFile)
Dim TargetWidth, TargetHeight As Int
TargetWidth = PanelSignaturePad.Width
TargetHeight = PanelSignaturePad.Height
If File.Exists(File.DirDocuments, TabStripMenue.tempImageFile) Then
' Dim Exif As ExifData
' Exif.Initialize(File.DirDocuments, TabStripMenue.tempImageFile)
' bmp = LoadBitmapSample(File.DirDocuments, TabStripMenue.tempImageFile, Max(TargetWidth, TargetHeight), Max(TargetWidth, TargetHeight))
' Log("Orientation: " & Exif.getAttribute(Exif.TAG_ORIENTATION))
'
' Select Exif.getAttribute(Exif.TAG_ORIENTATION)
' Case Exif.ORIENTATION_ROTATE_180 '3
' bmp = bmp.Rotate(180)
' Case Exif.ORIENTATION_ROTATE_90 '6
' bmp = bmp.Rotate(90)
' Case Exif.ORIENTATION_ROTATE_270 '8
' bmp = bmp.Rotate(270)
' End Select
'If Exif.getAttribute(Exif.TAG_ORIENTATION) = "0" Then bmp = bmp.Rotate(90)
bmp = bmp.Resize(TargetWidth, TargetHeight, True)
PanelSignaturePad.Width = bmp.Width
PanelSignaturePad.Height = bmp.Height
PanelSignaturePad.SetBitmap(bmp)
PanelSignaturePad.Left = 50%x - (PanelSignaturePad.Width/2)
PanelSignaturePad.SetBitmap(bmp)
End If
cvs.Initialize(PanelSignaturePad)
cvs.DrawRect(cvs.TargetRect, 0x00FFFFFF, True, 0)
cvs.Invalidate
MetaDatum = $"$DateTime{DateTime.Now} - "$
End Sub
Private Sub PanelSignaturePad_Touch (Action As Int, X As Float, Y As Float)
Select Action
Case PanelSignaturePad.TOUCH_ACTION_DOWN
LastX = X
LastY = Y
Case PanelSignaturePad.TOUCH_ACTION_MOVE
cvs.DrawLine(LastX, LastY, X, Y, StrokeColor, StrokeWidth)
cvs.DrawCircle (x, y, StrokeWidth/2, StrokeColor, True, StrokeWidth/2)
cvs.Invalidate
LastX = X
LastY = Y
End Select
End Sub
Sub btnUnterschriftSave_Click
Msgbox2("Msg", "Soll das Bild jetzt gespeichert werden?", "Bestätigung", Array ("Ja", "Abbruch"))
Wait For Msg_Click (ButtonText As String)
If ButtonText = "Ja" Then
'Zusatzschrift
LabelReturn.Visible = False
LabelVerschiebeButton.Visible = False
'EditText1.Enabled = False
PanelSchiebe.Width = (PanelSchiebe.Width-45dip)
'Zusatzschrift
PanelHGButton.Visible = False
Panel1Signatur.Visible = False
Sleep(300)
Dim Obj1, Obj2 As Reflector
Dim bmp As Bitmap
Dim c As Canvas
Obj1.Target = Obj1.GetActivityBA
Obj1.Target = Obj1.GetField("vg")
bmp.InitializeMutable(PanelSignaturePad.Width, PanelSignaturePad.Height)
c.Initialize2(bmp)
Dim args(1) As Object
Dim types(1) As String
Obj2.Target = c
Obj2.Target = Obj2.GetField("canvas")
args(0) = Obj2.Target
types(0) = "android.graphics.Canvas"
Obj1.RunMethod4("draw", args, types)
Dim Out As OutputStream = File.OpenOutput(File.DirDocuments, TabStripMenue.tempImageFile, False)
bmp.WriteToStream(Out, 98, "JPEG")
Out.Close
Main.NavControl.RemoveCurrentPage
End If
End Sub