Save & Load mit inkpicture

Moderator: ModerationP

Save & Load mit inkpicture

Beitragvon honz555 » 14. Jun 2018, 14:01

Hallo meine werten Freunde des Programms mit den Millionen Rechtecken... :)

folgendes Problem, ich will in einer userform etwas in das inkpicture1-objekt zeichnen und das dann beim drücken einer taste in einer Datei abspeichern, damit ich die Datei zu einem späteren Zeitpunkt in derselben userform mit einer anderen taste wieder laden kann und darin weiterzeichnen. so weit so gut, das mit dem speichern habe ich hinbekommen:

Private Sub CommandButton1_Click()
Dim imgBytes() As Byte
Dim FilePath As String

FilePath = ThisWorkbook.Path & "test1"
imgBytes = InkPicture1.Ink.Save(IPF_InkSerializedFormat)
Open FilePath For Binary As #1
Put #1, , imgBytes
Close #1
End Sub


aber beim laden der Datei hackts, habe das mal so versucht, aber funktioniert nicht und ist wohl total falsch

Private Sub CommandButton2_Click()
Dim imgBytes() As Byte
Dim FilePath As String
Dim tempInk As New Ink

FilePath = ThisWorkbook.Path & "test1"

Open FilePath For Binary As #1
ReDim imgBytes(1)
Get #1, , imgBytes
tempInk.Load (imgBytes)
Close #1

UserForm1.InkPicture1.Ink = tempInk
End Sub


BITTE BITTE hilfe :) :) dankeeeee
honz555
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6
Registriert: 21. Jan 2014, 08:58

Re: Save & Load mit inkpicture

Beitragvon Flotter Feger Gast » 14. Jun 2018, 16:39

Hallo,

InkPicture1.Picture = LoadPicture(FilePath)

Oder eine andere Function die ein IPictureDisp zurückgibt.

Sabina
Flotter Feger Gast
 

Re: Save & Load mit inkpicture

Beitragvon honz555 » 14. Jun 2018, 16:54

Danke für die Rückmeldung Sabina, aber wenn ich ein Bild über InkPicture1.Picture lade, dann ist es sozusagen im Hintergrund, ich kann zwar drauf weiterzeichnen, aber ich kann die neuen Zeichnung und die alte damit nicht gemeinsam abspeichern (das eine ist ein Picture, und das andere sind "strokes") und kann die alte auch nicht bearbeiten.

ich habe es inzwischen auch geschafft mit ink.save und ink.load die strokes, also die gezeichneten Linien von einer inkpic zu ner zweiten zu übertragen, das ganze geht auch über ne andere userform, nur die strokes aus der gespeicherten Datei wieder laden will nicht klappen leider

Private Sub CommandButton2_Click()
Dim imgBytes() As Byte
Dim tempInk As New InkDisp
imgBytes = InkPicture1.Ink.Save(IPF_InkSerializedFormat)
tempInk.Load (imgBytes)
InkPicture2.Enabled = False
InkPicture2.Ink.Load (tempInk.Save(IPF_InkSerializedFormat))
InkPicture2.Enabled = True
End Sub
honz555
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6
Registriert: 21. Jan 2014, 08:58

Re: Save & Load mit inkpicture

Beitragvon Flotter Feger Gast » 14. Jun 2018, 20:33

Hallo,

du musst schon sagen, welche Methode du willst. :doubt:

so ...
Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim FFile As String
Dim ff As Long

InkPicture1.AutoRedraw = True
FFile = "c:\1\xtest.gif"
ff = FreeFile

Open FFile For Binary As ff
ReDim gif(LOF(ff)) As Byte
Get ff, , gif()
Close ff

If InkPicture1.Ink.Strokes.count = 0 Then
    InkPicture1.InkEnabled = False
    InkPicture1.Ink.Load gif() ' <--- (***)
    InkPicture1.InkEnabled = True
    'InkPicture1.Picture = LoadPicture(FFile)
End If
End Sub

(***)
diese Zeile geht in VBA nur ein einziges Mal - und zwar nach der Initialisierung der Userform, wenn dem InkPicture noch nie Strokes zugeordnet waren, danach kann man die Strokes zwar löschen, aber Ink.Load geht erst wieder nach der Reinitialisierung des Userforms. Ist eine Einschränkung von VBA, da es keine echte Vererbung kennt.

Sabina
Flotter Feger Gast
 

Re: Save & Load mit inkpicture

Beitragvon Gast » 15. Jun 2018, 09:03

HAMMER, vielen vielen Dank Sabina!!!!
tschuldige für die Verwirrung :oops:

sg Hans-Peter
Gast
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Pearli123, u50er und 17 Gäste