Hm...gibt canvas.width denn nicht nur die "sichtbare" Weite des canvas aus?
Das würde zumindest erklären, warum du nur den sichtbaren Bereich in dein
Bild bekommst ;).
Wäre es denn nicht einfach möglich, die Zeichnungen im Canvas zuerst in ein
Bild zu zeichnen und dann das Bild im Canvas zu zeichnen? Dann wäre der
Speicher-Kram sehr schnell zu realisieren.
Beispiel, damit man weiß, was ich mein:
Ich nehme mal an es gibt ein Bild im System mit Weite und Höhe usw., könnte
man ja im open-event des Fenster anlegen:
Dim Bild As Picture
Bild=NewPicture(500,500,32)
Im Paint-Event des Canvas
Zeichen()
G.DrawPicture Bild,0,0
Als Methode nehm ich mal an gibt es folgende
Sub Zeichnen()
If Bild <> NIL Then
Bild.Graphics.DrawLine 170,45,200,40
'meinetwegen auch andere Operationen, das macht erstmal eine Linie
End If
End Sub
Und noch eine Methode zum Speichern die man dann auch irgendwoher aufrufen
kann
Sub Speichern()
Dim f As FolderItem
f=GetOpenFolderItem("")
If f <> NIL and Bild <> NIL Then
f.SaveAsJPEG Bild
End If
End Sub
So mal aus dem Stegreif geschrieben und nicht mit RB geprüft müsste das
gehen. Auf die Weise zeichne ich für gewöhnlich in ein Canvas.
Grüße Michael
Am 28.11.2007 14:04 Uhr schrieb "Klemi" unter <[EMAIL PROTECTED]>:
> Hi folks,
>
> irgendwie hänge ich fest... ich möchte den Inhalt eines Canvas in
> eine Datei sichern und zwar nutze ich dazu die folgende Routine:
>
> Dim P As Picture, X, Y As Integer
> dim f as folderitem
> f=GetSaveFolderItem("","Netzgrafik.jpg")
> if f<>nil then
> P = NewPicture(Canvas1.Graphics.Width, Canvas1.Graphics.Height,
> Screen(0).Depth)
> For X = 0 to Canvas1.Graphics.Width -1
> For Y = 0 to Canvas1.Graphics.Height -1
> P.Graphics.Pixel(X, Y) = Canvas1.Graphics.Pixel(X, Y)
> Next
> Next
> f.SaveAsJPEG p
> end if
>
>
> Das Ergebnis sieht erstmal recht gut aus, nur das Problem ist, dass
> das Canvas größer ist als das Window! Und mit dieser Routine wird
> tatsächlich nur der sichtbare Inhalt Canvas gesichert und nicht mehr!
> Wie kann ich erreichen, dass der gesamte Inhalt vom canvas gesichert
> wird inkl. der unsichtbaren Bereiche? Zur Info, das Canvas ist via
> Scrollbalken im Window verschiebbar.
>
>
> bye
> Klemens
>