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 
>   


Antwort per Email an