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