Inhalt Picturebox in Zwischenablage

Primax

Mitglied
Guten Morgen,
mal wieder ein kleines Problemchen...
Ich erstelle zur Laufzeit dynamisch Objekte in einer PictureBox, wie kann ich den Inhalt in die Zwischenablage bekommen.
Habe es mit,
SavePicture frm_Ausgabegrafisch.Picture1.Image, Programm_Pfad & "Test.bmp"
Clipboard.SetData LoadPicture(Programm_Pfad & "Test.bmp"), vbCFBitmap
aber ich bekomme den Inhalt nicht angezeigt.
Hat jemand eine Idee?
 
hallo Primax

der Befehl, um die Zwischenablage in eine Picturebox auszulesen lautet:

Picture1.Picture=Clipboard.GetData(vbCFBitmap)

Die Frage, die dabei aufkommt, ist:
Wird das Bild auch wirklich gespeichert?

Prüfe die Variable 'Programm_Pfad' ob diese mit '\' endet.

Ansonsten kann ich am Code nichts feststellen.

ANI
 
Hallo Ani

die Datei (test.bmp) wird erstellt, aber ich bekomme nur die leere Picturebox angezeigt. Der Inhalt (die Conrtols - Bilder) der Picturebox wird nicht mit gespeichert! Wieso?
 
hallo Primax,

schalte bitte bei deiner PictureBox 'frm_Ausgabegrafisch.Picture1' die AutoDraw-Eigenschaft auf 'TRUE'. Dann dürfte es funktionieren.

Das Image einer PictureBox ist nur virtuell und keine echte Bilddatei.

Noch ein Test:

Kopiere nach deiner Mehtode das Image in die Zwischenablage und öffne Paint auf deinem Rechner. Füge nun über das Menü 'Bearbeiten'-'Einfügen' die Zwischenablage ein. Erscheint das Bild, war die Zwischenablage erfolgreich.

ANI
 
mal wieder

Hallo Ani,
Danke schon mal, aber es funktioniert leider immer noch nicht. Ich habe nun die Funktion AutoReDraw beim Erstellen der Grafiken die auf meiner PictureBox liegen auf true gesetzt. Trotzdem kommt in der bmp-Datei immer nur ein weißes Blatt an, es werden die ganzen Images die ich erstelle (per code) nicht mit kopiert. Es scheint fast als wären sie auf dieser PictureBox gar nicht vorhanden.
Hier der Code mit dem ich die Controls erstelle:
Set TM_Master(i) = frm_Ausgabegrafisch.Controls.Add("VB.Image", "TM_Master" & i, frm_Ausgabegrafisch.Picture1)
TM_Master(i).Visible = True
TM_Master(i).Stretch = True
TM_Master(i).Width = Breite
TM_Master(i).Height = Hoehe_Master
TM_Master(i).Left = Links
TM_Master(i).Top = Oben
TM_Master(i).Picture = LoadPicture(Programm_Pfad & Bild_Master)

Und hier das anlegen der Datei:
SavePicture frm_Ausgabegrafisch.Picture1.Image, "c:\test.bmp"

Viele Grüße...
 
Hallo Primax,

der Fehler lieg daran, daß du ein VB.Image in deine PictureBox hinzufügst.

Ich würde dies so lösen:

1. eine PictureBox = Name: 'Original1' irgend wo im Formular (ausgeblendet)
2. Code: Factor ist der proportionale Faktor zum Original, picPrint ist mein Bild, in welches ich hinein kopiere.

If picOriginal1.ScaleWidth > picPrint.ScaleWidth Then
Factor = picOriginal1.ScaleWidth / picPrint.ScaleWidth
End If
If picOriginal1.ScaleHeight > (picPrint.ScaleHeight / 2) Then
Factor1 = picOriginal1.ScaleHeight / (picPrint.ScaleHeight / 2)
End If

If Factor > Factor1 Then
Weite = picOriginal1.ScaleWidth / Factor
Höhe = picOriginal1.ScaleHeight / Factor
ElseIf Factor < Factor1 Then
Weite = picOriginal1.ScaleWidth / Factor1
Höhe = picOriginal1.ScaleHeight / Factor1
ElseIf Factor > 0 And Factor1 > 0 Then
Weite = picOriginal1.ScaleWidth / Factor
Höhe = picOriginal1.ScaleHeight / Factor1
ElseIf Factor > 0 And Factor1 = 0 Then
Weite = picOriginal1.ScaleWidth / Factor
Höhe = picOriginal1.ScaleHeight / Factor
ElseIf Factor = 0 And Factor1 > 0 Then
Weite = picOriginal1.ScaleWidth / Factor1
Höhe = picOriginal1.ScaleHeight / Factor1
ElseIf Factor = 0 And Factor1 = 0 Then
Weite = picOriginal1.ScaleWidth
Höhe = picOriginal1.ScaleHeight
End If

picPrint.PaintPicture picOriginal, (picPrint.ScaleWidth - Weite) / 2, (picPrint.ScaleHeight / 4) - (Höhe / 2), Weite, Höhe

Nun wird mein Originalbild verkleinert in die PictureBox 'picPrint' hinein kopiert.
Ich kann somit mehrere Bilder in eine PictureBox packen (anzeigen lassen) und diese dann mit 'SavePicture picPrint.Image, Dateiname' als ein Bild speichern.
Ich benutze diese Methode, um zwei Bilder miteinander zu vergleichen. Ein Bild im oberen Bereich und ein Bild im unteren Bereich meiner PictureBox.

Versuch mal diese Methode

ANI
 
?

Hallo ANI,
HÄ?
Ich glaube zwar ich habe deinen code verstanden, aber wofür soll ich Ihn nehmen?
Dein Code macht doch folgendes:
- kopiert ein Orignalbild in eine picPrint-PictureBox
- die kannst du dann mit SavePicture speichern!


Aber bei mir sieht es doch so aus:
- ich habe auf einem Form bereits eine PictureBox (in der ich meine kleinen Bilder per Code erstelle)
- diese PictureBox kann ich doch dann auch mit SavePicture speichern!

Ich verstehe nicht warum ich den Umweg gehen sollte! Außerdem müßte ich dafür meine komplette Ausgabe wieder umstellen!

Mein Problem ist im Moment folgendes... er kopiert, aber nur eine leere Picturebox, und nicht die darauf zur Laufzeit erstellten Objekte.

Oder habe ich dich falsch verstanden...

grüße primax

Ich habe da gerade etwas rausgefunden...
wenn ich ein Bild in meine PictureBox einfüge (nicht per Code), und dann mit SavePicture frm_Ausgabegrafisch.Picture1.Image, "c:\test.bmp" arbeite, legt er das Bild mit Inhalt an!
Das ist also der Beweis, das die im Code erstellen Bilder (Images) die in der PictureBox erstellt werden nicht kopiert werden.
Was kann man da machen....
 
Zuletzt bearbeitet:
hallo Primax,

ich gluube, du hast das Prinzip etwas falsch verstanden.
Die Original-Picturebox dient als Original, von welchem ich dann das Image in die Druckvorlage 'picPrint' als kleines Bild an einer bestimmten Position ablege.

Somit kann ich viele kleine Bilder in einer Art von Thumbnail in ein Bild ablegen und kann dann dieses als ein gesamtes Bild aller Thumbnail ausdrucken oder speichern.

Ich sende dir mal mein Beispiel zu.

ANI
 

Anhänge

  • _grafikvergleich.zip
    3,3 KB · Aufrufe: 130
ja jetzt ist mir alles etwas klarer

Aber...
wie kann ich das für mich nutzen?

Zur Zeit erstelle ich hiermit meine Objekte...
Set TM_Master(i) = frm_Ausgabegrafisch.Controls.Add("VB.Image", "TM_Master" & i, frm_Ausgabegrafisch.Picture1)
TM_Master(i).Picture = LoadPicture(Programm_Pfad & Bild_Master)
Vielleicht hast du ja eine Idee, wie ich es anders machen kann...

Ziel ist es, Bilder die ich per Code erstelle (auf einem Frame, oder einer PictureBox, oder einem Form?) in einem Bild zusammengefasst nach Word zu bekommen!

bis dann...
 
hallo Primax,

Controls sind niemals Bestandteil einer Picturebox, da diese kein Image hinterlassen.

Stelle dir deine Picturebox als Schachbrett vor.

OriginalBild.Picture = LoadPicture(A1.Bildpfad)
Schachbrett.PaintPicture OriginalBild, 0, 0, A1.width, A1.height
OriginalBild.Picture = LoadPicture(A2.Bildpfad)
Schachbrett.PaintPicture OriginalBild, A1.width, A1.height, A1.width, A1.height
OriginalBild.Picture = LoadPicture(A3.Bildpfad)
Schachbrett.PaintPicture OriginalBild, A.width * 2, A1.height * 2, A1.width, A1.height
OriginalBild.Picture = LoadPicture(A4.Bildpfad)
Schachbrett.PaintPicture OriginalBild, A.width * 3, A1.height * 3, A1.width, A1.height
OriginalBild.Picture = LoadPicture(A5.Bildpfad)

usw.

Schachbrett kann auch eine Form sein, wenn du direkt in eine Form die Bilder legen möchtest. Dann schreibst du eben 'Form.Image' statt Schachbrett.Image'.

Auf dieser Basis würde ich das Schachbrett mit den einzelnen Bildern füllen. Diese kann ich dann unter 'SavePicture Schachbrett.Image, Neuer Bildpfad' als Bild abspeichern.

Ich weis nicht warum du Controls einsetzen möchtest!

ANI
 

Neue Beiträge

Zurück