|
Normalerweise ist es kein Problem, den gerade frisch (mit Line, Circle, PSet usw.) gemalten Inhalt einer PictureBox (eines Forms, eines UserControls usw.) aus der Image-Eigenschaft auszulesen und anderswo wie jedes andere Picture-Objekt zum Anzeigen, Speichern oder erneuten Malen (etwa per PaintPicture-Methode) zu verwenden. Voraussetzung ist dabei, dass die AutoRedraw-Eigenschaft der PictureBox auf True gesetzt ist.
Nur in einem Fall will das einfach nicht so recht gelingen. Ein Zeichenobjekt wie die PictureBox sträubt sich unverständlicherweise dagegen, seinen eigenen Inhalt bzw. Teile davon erneut auf sich selber mittels der Paint-Picture-Methode abzubilden, wenn der Inhalt der Image-Eigenschaft verwendet werden soll.
With Picture1
.PaintPicture .Image, ..., ...
End With
Auch ein Zwischenspeichern in einer Objekt-Variablen des Typs StdPicture nutzt nichts:
Dim nImage As StdPicture
With Picture1
Set nImage = .Image
.PaintPicture nImage, ..., ...
End With
Erst der Umweg über die Picture-Eigenschaft einer anderen PictureBox scheint Abhilfe zu schaffen:
With Picture1
Set Picture2.Picture = .Image
.PaintPicture Picture2.Picture, ..., ...
End With
Ein kurzer Versuch zeigt aber, dass nicht unbedingt eine zweite PictureBox notwendig ist - es reicht auch die eigene Picture-Eigenschaft der PictureBox:
With Picture1
Set .Picture = .Image
.PaintPicture .Picture, ..., ...
End With
|