Hi,
so ganz bin ich noch nicht dabei???
Mit
Zeichen()
G.DrawPicture Bild,0,0

wird der Inhalt von Bild ins canvas geschrieben aber es sollte andersrum sein. Wie schreibe ich den Inhalt vom Canvas ins "Bild"?

Klemens
Am 28.11.2007 um 15:28 schrieb Michael Köhler:

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